0

2台のiPhone間で、CoreDataを介して管理されている情報を交換したいアプリケーションがあります。

まず、Core DataオブジェクトをNSDictionaryに変換します(転送されるNSDataに変換される非常に単純なもの)。

私のCoreDataには、3つの文字列属性と、変換可能な2つの画像属性があります。

NSDictionary APIを調べましたが、CoreData情報を作成または追加することはできませんでした。

これに関するヘルプやサンプルコードをいただければ幸いです。

4

2 に答える 2

1

Core Data オブジェクトをネットワーク経由でプッシュする前に、JSON などの中間形式に変換することをお勧めします。NSManagedObjectインスタンスを JSON に変換したり、JSON から変換したりする方法に関するコードは、別の投稿で書きました。

iPhone の JSON と Core Data

于 2010-06-17T16:33:24.547 に答える
1

NSManagedObject は NSCoding プロトコルに準拠していないため、マネージド オブジェクトを直接データに変換することはできません。

代わりに、インスタンス属性を含むディクショナリを返すメソッドをマネージド オブジェクト サブクラスに追加し、受信側でそれらを使用してローカル コンテキストで新しいマネージド オブジェクトを作成するだけです。

編集:

コメントから:

現在、私は送信側のために持っています..

NSData* data;
NSString *str0 = [NSString stringWithFormat:@"%@",[[person valueForKey:@"PersonName"] description]];
NSString *str1 = [NSString stringWithFormat:@"%@",[[person valueForKey:@"alias"] description]];
NSMutableDictionary *taskPrototype = [NSMutableDictionary dictionary];
[taskPrototype setObject:str0 forKey:@"PersonName"];
[taskPrototype setObject:str1 forKey:@"alias"];
data = ?????;
//I do not know what to put here... [self mySendDataToPeers:data];

私が持っている受信側で...

 NSMutableDictionary *trial = [[NSMutableDictionary alloc] initWithData:data];
 NSString *str0a = ???? NSString *str1a = ???? 
//I dont know what to put after this to retrieve the values and keys from the dictionary

プロセスを逆にして、受信側で管理対象オブジェクトを作成するだけです。

NSMutableDictionary *trial = [[NSMutableDictionary alloc] initWithData:data];
NSManagedObject *person=[NSEntityDescription insertNewObjectForEntityForName:@"PersonEntity" inManagedObjectContext:moc];
[person setValue:[trial objectForKey:@"PersonName"] forKey:@"PersonName"];
[person setValue:[trial objectForKey:@"alias"] forKey:@"alias"];

..これで完了です。

于 2010-06-17T14:10:38.973 に答える