0

私は、次のようなsqliteデータベースに保存しているカスタムクラスQBChatDialogオブジェクトを持っています

  -(void)storeInDB:(QBChatDialog *)dialog {    
         NSString *query = = [NSString stringWithFormat:@"INSERT INTO dialogs (dialog_id,last_message) VALUES ('%@','%@')",dialog.ID,dialog.lastMessageText];
        //run the query
}

次に、データベースから NSDictionary として取得しています。

// after fetching as an array in dbrecord 
NSDictionary *dialogDictionary = @{@"dialog_id":[dbrecord objectAtIndex:DIALOG_ID_INDEX],
                                 @"dialog_last_message":dbrecord objectAtIndex:DIALOG_LAST_MESSAGE_INDEX]
                                  };

QBChatDialogまたはのような値を取得するために、クラスにマップし直すにはどうすればよいですdialog.IDdialog.lastMessageText。クラスはサードパーティ API で、一部のプロパティはread-only.

ありがとう

4

1 に答える 1

0

読み取り専用プロパティを設定する必要はないため、基本的に NSDictionary をアンラップできます。ダイアログ ID とそのタイプを確実に保存して、次のコードから開始できるようにしてください。

QBChatDialog *fetchedDialog = [[QBChatDialog alloc] initWithDialogID:dialogDictionary[@"dialog_id"] type:dialogDictionary[@"dialog_type"]];

その後、必要なすべてのフィールドを設定するだけです。これは読み取り専用ではありません。

fetchedDialog.lastMessageText = dialogDictionary[@"dialog_last_message"];
于 2015-11-24T13:23:44.793 に答える