核心数据模型对象保存的最佳实践
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
类中创建实体也是一种可行且非常常见的模式。实用程序类的好处是您可以更轻松地为后台操作维护多个上下文。
*) 我不再使用类别,因为很少会通过多个字段更改模型 - 我更喜欢手动编辑它们。
【讨论】:
以上是关于核心数据模型对象保存的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章