Core data 使用GameKit通过NSDictionary在iPhone之间传输CoreData数据

Core data 使用GameKit通过NSDictionary在iPhone之间传输CoreData数据,core-data,nsdictionary,data-transfer,transfer,gamekit,Core Data,Nsdictionary,Data Transfer,Transfer,Gamekit,我有一个应用程序,我想通过核心数据在两部iPhone之间交换信息 首先将核心数据对象转换为NSDictionary(非常简单的转换为NSData以进行传输) My CoreData有3个字符串属性和2个可转换的图像属性 我已经浏览了NSDictionary API,但在创建或添加CoreData信息方面没有任何运气 非常感谢您提供的任何帮助或示例代码。NSManagedObject不符合NSCoding协议,因此您无法将托管对象直接转换为数据 相反,您只需要向托管对象子类添加一个方法,该方法返回

我有一个应用程序,我想通过核心数据在两部iPhone之间交换信息

首先将核心数据对象转换为NSDictionary(非常简单的转换为NSData以进行传输)

My CoreData有3个字符串属性和2个可转换的图像属性

我已经浏览了NSDictionary API,但在创建或添加CoreData信息方面没有任何运气


非常感谢您提供的任何帮助或示例代码。

NSManagedObject不符合NSCoding协议,因此您无法将托管对象直接转换为数据

相反,您只需要向托管对象子类添加一个方法,该方法返回一个带有实例属性的字典,然后在接收方,使用这些属性在本地上下文中创建一个新的托管对象

编辑:

从评论中:


目前我已经收到了发送邮件的通知 侧面


在接受方,我有

您可以简单地反转过程,在接收方上创建托管对象

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"];

。。你完成了

我建议您先将核心数据对象转换为类似JSON的中间格式,然后再将其推送到网络上。在另一篇文章中,我编写了关于如何将
NSManagedObject
实例转换为JSON和从JSON转换为JSON的代码:


目前,我已为发送方提供了。。。NSData*数据;NSString*str0=[NSString stringWithFormat:@“%@,[[person valueForKey:@“PersonName”]描述]];NSString*str1=[NSString stringWithFormat:@“%@,[[person valueForKey:@“alias”]description]];NSMutableDictionary*taskPrototype=[NSMutableDictionary];[taskPrototype setObject:str0 forKey:@“PersonName”];[taskPrototype setObject:str1 forKey:@“别名”];数据=//我不知道在这里放什么。。。[self mySendDataToPeers:data];在接受方,我有。。。NSMutableDictionary*trial=[[NSMutableDictionary alloc]initWithData:data];NSString*str0a=????NSString*str1a=//我不知道在这之后放什么才能从字典中检索值和键。
 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"];