从核心数据中读取

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 不是数据库。

以上是关于从核心数据中读取的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何在核心数据中存储从 UISlider 读取的百分比值?

我可以使用核心数据读取和写入主包中的数据库吗?

从 MVC .Net 核心控制器读取 JSON 时出现问题

NSFetchRequest 不读取更新的行 [关闭]

如何将获取的对象保存到核心数据

《亿级流量网站架构核心技术》---高并发