【发布时间】:2010-08-12 16:44:59
【问题描述】:
我正在开发一个从 Web 服务器下载数据的 iPhone 应用程序,我有时(但并非总是)想要缓存这些下载的结果。我正在处理的实体是一个事件。事件以下列方式出现在 UI 中:
- 作为基于位置的搜索的结果
- 作为基于关键字的搜索的结果
- 最喜欢的活动列表
只有在第三种情况下才有必要(或希望)将数据存储在本地数据库中。换句话说,我下载了一个事件,只有当用户决定将其添加到他们的收藏夹时,它才会存储在本地。
知道我正在下载的数据是 JSON 格式可能有帮助,也可能没有帮助。
我想使用一致的模型对象来表示事件,但有时它们会存储在数据库中,有时它们不会。我不希望我的视图控制器必须知道或关心对象来自哪里,它们应该能够显示来自本地缓存的事件,或者来自没有任何特殊代码的下载来处理任何一种情况。
因此,我可以使用 NSManagedObject(或其子类)来表示事件吗?如果我不这样做,在我看来,我将处理两个模型对象,一个是我的自定义对象,用于下载和未存储的事件,另一个是存储事件的 NSManagedObject 子类,两者都有相同的属性,但它们是根本不同的东西。
或者,是否有第三种选择,我创建某种装饰器对象(或协议?),它知道如何将来自视图控制器的请求代理到底层数据,有时是 NSManagedObject,有时是从生成的字典JSON?
这里推荐的解决方案是什么?
【问题讨论】:
标签: objective-c cocoa-touch core-data