核心数据对现有项目 iphone 的影响

Posted

技术标签:

【中文标题】核心数据对现有项目 iphone 的影响【英文标题】:impact of core data on existing project iphone 【发布时间】:2010-07-28 12:01:14 【问题描述】:

我开始研究 Core Data,因为许多人声称是保存数据的最佳方式。

我有一个已经工作的项目及其模型和对象,该应用程序的主要目的是将事物作为属性(NString,NSObject,自定义对象..ecc)封装到一个主类中,提供创建多个实例的能力然后将其保存到存储中,稍后检索并显示包含所有已保存实例的表列表。

在这种情况下,我的类已经定义(作为 NSObject 扩展),引入 Core Data 会发生什么?我需要重写我的模型吗?

例如,作为第一次尝试,我在 xcode 中创建了一个模型,然后将我的对象作为实体关联到它。但是一些没有使用标准的属性,例如 string, int ...ecc 得到了 UNDEFINED 作为类型。

@interface Car 
NSString *name;
WheelsType wtype; <-- undefined
NSDate *buy;
CarColor *color; <-- undefined

@end

这是什么意思?我只能保存 String,Int,Boolean...ecc 但不能保存我的自定义类吗?如果不是,表结构可能是什么?

谢谢

【问题讨论】:

【参考方案1】:

CoreData 中的自定义类型可以声明为transformable,这意味着它们将与NSData 的实例相互转换。默认值转换器在许多情况下都有效,但您的类可能需要自定义 NSValueTransformer

编辑: 由于使用CoreData 改变了您检索数据的方式,因此检查您的模型是明智的。阅读CoreData 文档,然后考虑如何访问您的对象以及如何避免出错的对象和属性将不使用。

【讨论】:

谢谢,现在很清楚了。你认为引入核心数据会让我重写或重新思考一些类和模型吗?或者它只是一个我可以插入的层,它唯一的影响是检索和保存? 由于它会影响您检索数据的方式,因此明智的做法是检查您的模型。阅读CoreData 文档,然后考虑如何访问您的对象以及如何避免出错的对象和属性将不使用。这能回答你的问题吗? 是的,谢谢,我也发现插入 Core Data 并不像我在这里所说的那样简单:***.com/questions/3377694/…,如果你重写你的答案,包括最后一条评论,我可以将问题标记为已回答。 我已经编辑了我的答案以包含上述评论,并会在我找到时间时回答您链接的后续问题。

以上是关于核心数据对现有项目 iphone 的影响的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - iPhone5 对现有应用程序的支持?

iPhone:在应用程序的未来版本中更新核心数据模型

将核心数据添加到 iPhone 项目

Iphone 编程 - 将现有的 sql 表导入到 sqlite 或核心数据

将核心数据添加到现有的 iPhone 项目

iPhone核心数据得到孙子