我有一个应用程序,我想通过 Core Data 在两部 iPhone 之间交换信息。
首先将 Core Data 对象转换为 NSDictionary(非常简单的转换为 NSData 以进行传输)。
我的 CoreData 有 3 个字符串属性,2 个可转换的图像属性。
我查看了 NSDictionary API,但没有任何运气,创建或添加 CoreData 信息。
任何有关此的帮助或示例代码将不胜感激。
我有一个应用程序,我想通过 Core Data 在两部 iPhone 之间交换信息。
首先将 Core Data 对象转换为 NSDictionary(非常简单的转换为 NSData 以进行传输)。
我的 CoreData 有 3 个字符串属性,2 个可转换的图像属性。
我查看了 NSDictionary API,但没有任何运气,创建或添加 CoreData 信息。
任何有关此的帮助或示例代码将不胜感激。
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"];
..你就完成了。
我建议您将 Core Data 对象转换为像 JSON 这样的中间格式,然后再将其推送到网络上。我已经在另一篇文章中编写了有关如何将NSManagedObject
实例转换为 JSON 和从 JSON 转换为 JSON 的代码: