我在我的项目中使用Core数据,并在fetchResultController的帮助下直接在viewControllers中使用NSManagedObject.
但是根据新的清洁代码体系结构或VIPER方法,它说在视图或演示者类中使用PONSO或NSOject而不是NSManagedObject.
在上面的场景中,任何人都可以给我NSManagedObject vs NSObject的支持和利弊吗?
最佳答案 我列出了两种方法的专业人员:
保持NSManagedObject方法:
>它更简单
>它更快(NSManagedObjects仅在需要时从内存加载其属性)
>您可以使用NSFetchedResultsController:这可能是个人观点,但在我的应用程序中,我大量使用NSFetchedResultsController,因为它很容易使表视图的接口与数据保持一致.
VIPER方法:(将每个NSManagedObject解码为PONSO)
>您可以非常轻松地切换存储后端.即如果你想从核心数据切换到.plist文件(可能不是最好的主意).
>您可以使用多个数据源:I.e.将当前登录的用户配置文件存储在Core Data中,但将其访问令牌存储在钥匙串中.其他对象可以简单地使用PONSO,它将包含来自两个源的数据.
>测试:如果你能够传递PONSO而不必创建NSManagedObjectContext,NSFetchRequest和NSManagedObjects,那么测试你的Interactors要容易得多.