Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios nsobject与nsmanagedobject的利弊_Ios_Iphone_Nsmanagedobject_Nsobject - Fatal编程技术网

Ios nsobject与nsmanagedobject的利弊

Ios nsobject与nsmanagedobject的利弊,ios,iphone,nsmanagedobject,nsobject,Ios,Iphone,Nsmanagedobject,Nsobject,我在项目中使用核心数据,并在fetchResultController的帮助下在ViewController中直接使用NSManagedObject。 但根据新的干净代码体系结构或VIPER方法,它说的是在视图或presenter类中使用PONSO或NSProject而不是NSManagedObject 有谁能告诉我在上述场景中NSManagedObject与NSObject的利弊吗?我列出了两种方法的利弊: 保持NSManagedObject方法: 更简单 更快(NSManagedObject

我在项目中使用核心数据,并在fetchResultController的帮助下在ViewController中直接使用NSManagedObject。
但根据新的干净代码体系结构或VIPER方法,它说的是在视图或presenter类中使用PONSO或NSProject而不是NSManagedObject


有谁能告诉我在上述场景中NSManagedObject与NSObject的利弊吗?

我列出了两种方法的利弊:

保持NSManagedObject方法:

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

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

  • 谢谢你,卢卡斯。经过研究,我选择了VIPER方法,因为我使用Parse作为服务器端,它的PFObject和Coredata是NSManagedObject。因此,最好在Viewcontroller中获得来自Parse或ManagedObject的任何内容,并具有将Parse切换到其他后端的灵活性。