ios - nsobject 与 nsmanagedobject 优缺点

标签 ios iphone nsmanagedobject nsobject

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

谁能告诉我在上述情况下 NSManagedObject 与 NSObject 的优缺点?

最佳答案

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

保留 NSManagedObject 方法:

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

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

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

关于ios - nsobject 与 nsmanagedobject 优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616069/

相关文章:

ios - 不兼容的 CoreData 存储是否总是会导致崩溃?

iphone - UISlider 拇指停止拖动

ios - Sinch SDK callPhoneNumber 在生产应用程序中崩溃

iphone - MPMoviePlayerViewController 问题-Iphone

objective-c - 核心数据-实例变量更新中的NSManagedObjects

iphone - Xcode : Storyboarding with CoreData

ios - CLLocationManager 的 AuthorizationStatus 在 iOS 14 上已弃用

ios - 如何更改栏按钮图像颜色?

ios - UITableView "cellForRowAt: indexPath"偶尔在核心数据属性上调用 "init?(coder aDecoder: NSCoder)"

iphone - UITableView 自定义单元格抛出 SIGABRT 错误