【问题标题】:Using GameKit to transfer CoreData data between iPhones, via NSDictionary使用 GameKit 通过 NSDictionary 在 iPhone 之间传输 CoreData 数据
【发布时间】:2010-06-17 03:56:24
【问题描述】:

我有一个应用程序,我想通过 Core Data 在两部 iPhone 之间交换信息。

首先将 Core Data 对象转换为 NSDictionary(非常简单的东西,可以转换为 NSData 进行传输)。

我的 CoreData 有 3 个字符串属性,2 个可转换的图像属性。

我查看了 NSDictionary API,但没有任何运气,向其中创建或添加 CoreData 信息。

任何有关此的帮助或示例代码将不胜感激。

【问题讨论】:

    标签: core-data nsdictionary data-transfer transfer gamekit


    【解决方案1】:

    我建议您将 Core Data 对象转换为像 JSON 这样的中间格式,然后再将其推送到网络上。我已经在另一篇文章中编写了有关如何将 NSManagedObject 实例转换为 JSON 和从 JSON 转换的代码:

    JSON and Core Data on the iPhone

    【讨论】:

      【解决方案2】:

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

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

      编辑:

      来自 cmets:

      目前我有发送 侧面..

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

      ..你就完成了。

      【讨论】:

      • 目前我有发送方... NSData* 数据; NSString *str0 = [NSString stringWithFormat:@"%@",[[person valueForKey:@"PersonName"] description]]; NSString *str1 = [NSString stringWithFormat:@"%@",[[person valueForKey:@"alias"] description]]; NSMutableDictionary *taskPrototype = [NSMutableDictionary 字典]; [taskPrototype setObject:str0 forKey:@"PersonName"]; [taskPrototype setObject:str1 forKey:@"alias"]; data = ?????;//这里不知道放什么... [self mySendDataToPeers:data];
      • 在接收端我有... NSMutableDictionary *trial = [[NSMutableDictionary alloc] initWithData:data]; NSString *str0a = ???? NSString *str1a = ???? //我不知道在这之后放什么来从字典中检索值和键。
      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多