我在我的项目中使用核心数据,并在 fetchResultController 的帮助下直接在 viewControllers 中使用 NSManagedObject。
但是根据新的干净代码架构或 VIPER 方法,它说在 View 或演示器类中使用 PONSO 或 NSOject 而不是 NSManagedObject。
谁能告诉我在上述情况下 NSManagedObject 与 NSObject 的优缺点?
最佳答案
我列出了这两种方法的优点:
保留 NSManagedObject 方法:
- 更简单
- 速度更快(NSManagedObjects 仅在需要时从内存中加载它们的属性)
- 您可以使用 NSFetchedResultsController:这可能是个人观点,但在我的应用程序中我大量使用 NSFetchedResultsController,因为它很容易使 TableView 的界面与数据保持一致。
VIPER 方法:(将每个 NSManagedObject 解码为 PONSO)
- 您可以非常灵活地切换存储后端。 IE。如果您想从核心数据切换到 .plist 文件(可能不是最好的主意)。
- 您可以使用多个数据源:即将当前登录用户的个人资料存储在核心数据中,但将他的访问 token 存储在钥匙串(keychain)中。其他对象可以简单地使用 PONSO,它将包含来自两个来源的数据。
- 测试:如果您能够将 PONSO 传递给交互器,而不必创建 NSManagedObjectContext、NSFetchRequest 和 NSManagedObjects,那么测试交互器会容易得多。
关于ios - nsobject 与 nsmanagedobject 优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616069/