核心数据模型对象保存的最佳实践

Posted

技术标签:

【中文标题】核心数据模型对象保存的最佳实践【英文标题】:Best practice for core data model object save 【发布时间】:2015-07-31 06:27:30 【问题描述】:

我有两个实体“Person”和“Car”来自网络服务。 我需要通过核心数据将其存储在 sqlite 中。我想知道我应该将 save 方法与 NSmanagedobject 绑定还是在实用程序或管理器中以不同方式编写的最佳方法是什么?

**Approach 1** 

@interface Person : NSManagedObject

@property (nonatomic, retain) NSString * title;

- (void) saveManagedObject:(NSDictionary*)response //Responsible for init the person object and save in context

@end

**Approach 2**

@interface CoreDataUtility : NSObject

- (void) saveManagedObject:(NSDictionary*)response //Responsible for create the person object and save in context

@end

【问题讨论】:

对此的旁注,您添加到NSManagedObject 类的任何方法都应该在一个类别中执行。如果您更改 CoreData 布局并重新生成文件,您的方法将丢失。 感谢您的留言 :)。 你能给我推荐一个好的方法吗? @SauravNagpal 嗨。 CoreData 的最佳实践 - Mogenerator + MagicalRecord @SauravNagpal 看看这个教程youtube.com/watch?v=N2sZ9IjDBzs 【参考方案1】:

简短回答:两种方法都很好,特别是如果您不想处理 3rd 方框架。这些可能有用,但也承担一些风险;这将是另一个问题。

在“NSManagedObject”子类(在一个类别或其他地方*)中有一个创建方法是非常好的。

但是,您应该将其设为 方法,而不是实例方法。

DataManager 类中创建实体也是一种可行且非常常见的模式。实用程序类的好处是您可以更轻松地为后台操作维护多个上下文。

*) 我不再使用类别,因为很少会通过多个字段更改模型 - 我更喜欢手动编辑它们。

【讨论】:

以上是关于核心数据模型对象保存的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

使用核心数据生成的类作为模型对象......?

Laravel 4 中相关模型验证的最佳实践?

利用TF dataset改善模型训练效率的最佳实践

核心数据:如何保存以编程方式创建的对象数据模型

更改未保存在核心数据模型中(例如删除对象)

利用TF dataset改善模型训练效率的最佳实践