从核心数据中读取
Posted
技术标签:
【中文标题】从核心数据中读取【英文标题】:Reading from Core Data 【发布时间】:2011-09-11 19:41:50 【问题描述】:我想从 Core Data 中读取一些数据进行统计。我的数据模型就像在互联网上找到的教程一样(点击一下就可以了)。但现在我想处理数据。
我的功能:
-(int)calcAve
int ret=0;
ret = [[stats valueForKey:@"aveScore"] intValue];
NSLog(@"%d",ret);
return ret;
stats
是从.xib 连接到类的对象,其中。此对象绑定到数据模型中的实体 Stats。 [stats entity]
返回正确的值。
aveScore
是实体 stats
中的一个对象(没有拼写错误,检查了多次!)。不,错误告诉我,stats
不是正确的数据模型:
this class is not key value coding-compliant for the key
这有什么问题?有没有一种简单的方法可以从 Core Data 中读取数据?
【问题讨论】:
您可以通过发出NSLog(@"stats: %@",stats)
来显示stats
中所有属性的内容。这给了你什么?
输出:stats: <StatsArrayController: 0x448e20>[entity: Stats, number of selected objects: 1]
【参考方案1】:
我不确定在这种情况下您的 managedObject 是什么。但是,通常您希望在 managedObjectContext 中存储多个同一类的 managedObject。例如 MOC 中的几个配方对象。每个配方都有属性。
您对关键价值的呼吁听起来很合理。检查 stats 对象的类是什么。如果它不属于 NSManagedObject
类或您的自定义子类,那么您就有问题了。您只能在 CoreData 中存储 NSManagedObjects
。你可以这样检查:
NSString *className = NSStringFromClass([stats class]);
NSLog(@"class name: %@",className);
按照您的要求,我建议您尝试再次阅读 CoreData 文档并查看 Apple 示例代码库中的 Recipes 示例。
【讨论】:
stats
的类是StatsArrayController
,它是NSArrayController
的子类。所以可能有一个问题。我明天去看看。
有问题。您希望您的托管对象返回而不是数组控制器。您可以使用 [stats content] 获取托管对象的数组,但这通常不是检索数据的方式。通常你会在你的 moc 上生成并执行一个获取请求,并使用一个谓词来定义要获取的对象。
记住:CoreData 不是数据库。以上是关于从核心数据中读取的主要内容,如果未能解决你的问题,请参考以下文章