【问题标题】:JSON to core-dataJSON 到核心数据
【发布时间】:2012-01-03 19:05:53
【问题描述】:

我正在尝试将 JSON 响应保存到我的应用的本地核心数据。为此,我正在遵循以下实现: https://stackoverflow.com/a/2363996/127036

这是我的代码:

NSString *objectName = @"Post";
NSManagedObject *managedObject = [NSEntityDescription insertNewObjectForEntityForName:objectName inManagedObjectContext:moc];
[managedObject setValuesForKeysWithDictionary:structureDictionary];

编译器返回以下错误:

-[__NSCFDictionary entity]: unrecognized selector sent to instance 0x6dc6fa0

尝试执行时:

setValuesForKeysWithDictionary

请指导我正确的方向来解决这个问题。

【问题讨论】:

  • 您的structureDictionary 中有什么内容?

标签: iphone objective-c ios json core-data


【解决方案1】:

我没有在 NSManagedObject 的开发中心看到 setValuesForKeysWithDictionary

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html

您可能必须循环并使用 setValue:forKey: 一次执行一个:

【讨论】:

【解决方案2】:

这篇文章现在已经很老了,我相信 Vibhor Goyal 已经继续前进了。但万一有人遇到同样的问题,他得到的原因是

-[__NSCFDictionary entity]: unrecognized selector sent to instance

是因为在他的 Post 模型中,我确信他有子实体,可能类似于“cmets”,这可能是与“Comment”模型的一对多关系。

然后在他的结构字典中,他可能有对应于他的 Post 模型的常用键值字段,对于“cmets”键,他可能有一个 NSSet 的 NSDictionaries 作为值。

所以他得到实体选择器错误的原因是因为在底层,核心数据期望“cmets”是一个充满“Comment”实例的集合,这些实例应该是 NSManagedObject 的实例,但它却得到了NSDictionary 的实例。因此,当它向每个“cmets”请求“实体”时,它会引发无法识别的选择器错误。

希望这对将来的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2011-10-20
    • 2023-03-30
    • 2013-07-01
    • 2011-04-23
    相关资源
    最近更新 更多