使用现有(普通)模型将核心数据添加到iPhone应用程序

ale*_*x_c 7 architecture iphone core-data objective-c ios

我有一个相当复杂的iPhone应用程序,它依赖于API从服务器获取数据并将其显示给用户.我有大约5个模型类在整个应用程序中使用 - 它们只是扩展NSObject.

我想为模型添加一些持久性,即使设备处于脱机状态,也允许使用应用程序的某些部分 - 它实际上基本上只是美化缓存.我只希望保留某些模型实例 - 例如,用户已添加书签的项目 - 其他项目不应该,例如数百个搜索结果.

Core Data是否适合这个解决方案?我能看到的困难是:

  • 我必须改变整个项目中实例化模型对象的方式.我必须将它们初始化为上下文的一部分,如果它们实际上来自外部API,则不一定有意义.
  • 我需要注意不要坚持我不想要的实例.这似乎可以归结为在创建后立即删除托管对象(非常笨拙)或者为不希望持久存在的实例使用单独的非持久上下文(更好,但仍然有些尴尬)

我希望我可以在整个应用程序中继续使用我的模型而不需要更改不需要关注持久性的代码,但鉴于我的要求,这似乎不可行.另一种方法是与我现有的对象并行设置一组新的托管对象,并且只使用托管对象来保持持久性 - 但这种复制似乎永远不是正确的解决方案.

我应该尝试将核心数据搞砸到这个,如果是这样,怎么样?或者我应该只看其他选项 - sqlite3(对于我需要的东西看起来有点复杂),用户默认值(可能不是他们想要的),甚至是序列化并将我自己的对象写入文件(似乎hack-ish ).

感谢您的任何意见!

Dyl*_*ich 3

为什么不看看 NSKeyedArciver/Unarchiver 呢?我想说,当处理大量数据和 sqlite 数据库时,Core Data 是显而易见的解决方案,但 NSKeyedArchiver 是我用来保存模型的工具。请在此处查看 Apple 的文档。在我看来,使用 NSKeyedArchiver 非常简单,您可以用它存储几乎所有您需要的东西。