nsobject 与 nsmanagedobject 的优缺点

Posted

技术标签:

【中文标题】nsobject 与 nsmanagedobject 的优缺点【英文标题】:nsobject vs nsmanagedobject pro and cons 【发布时间】:2014-12-23 07:42:22 【问题描述】:

我在我的项目中使用核心数据,并在 fetchResultController 的帮助下直接在 viewControllers 中使用 NSManagedObject。 但是根据新的干净代码架构或 VIPER 方法,它是说在视图或演示者类中使用 PONSO 或 NSOject 而不是 NSManagedObject。

谁能告诉我上述场景中 NSManagedObject 与 NSObject 的优缺点?

【问题讨论】:

【参考方案1】:

我列出了这两种方法的优点:

保持 NSManagedObject 方法:

    更简单 更快(NSManagedObjects 仅在需要时从内存中加载其属性) 您可以使用 NSFetchedResultsController:这可能是个人观点,但在我的应用程序中,我大量使用 NSFetchedResultsController,因为它很容易保持表格视图的界面与数据保持一致。

VIPER 方法:(将每个 NSManagedObject 解码为 PONSO)

    您可以非常灵活地切换存储后端。 IE。如果您想从核心数据切换到 .plist 文件(可能不是最好的主意)。 您可以使用多个数据源:即将当前登录用户的个人资料存储在 Core Data 中,但将他的访问令牌存储在钥匙串中。其他对象可以简单地使用 PONSO,其中包含来自两个来源的数据。 测试:如果您能够向交互器传递 PONSO,而不必创建 NSManagedObjectContext、NSFetchRequest 和 NSManagedObjects,那么测试交互器会容易得多。

【讨论】:

谢谢卢卡斯。经过研究,我选择了 VIPER 方法,因为我使用 Parse 作为服务器端,并且它具有 PFObject 和 Coredata 具有 NSManagedObject。因此最好在 Viewcontroller 中获取来自 Parse 或 ManagedObject 的 PONSO,并且可以灵活地将解析切换到其他后端。

以上是关于nsobject 与 nsmanagedobject 的优缺点的主要内容,如果未能解决你的问题,请参考以下文章

nsobject 与 nsmanagedobject 的优缺点

将视图推出 NSObject 类

@dynamic 使用的常见情况是啥?

从 JSON 到 NSObjects 的对象映射库

iOS开发底层之NSObject-alloc源码分析-02

iOS类别(Category)与扩展(Extension)-b