Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 CoreData性能与关系(RemoteID和内部ID)_Ios_Swift_Core Data - Fatal编程技术网

Ios CoreData性能与关系(RemoteID和内部ID)

Ios CoreData性能与关系(RemoteID和内部ID),ios,swift,core-data,Ios,Swift,Core Data,我有很多具有关系的CoreData模型,例如: 一项任务可以有人、组、图像等 通常,如果用户使用关系创建新对象,我会在这里使用CoreData关系。比如: let object = NSEntityDescription.insertNewObjectForEntityForName("Images", inManagedObjectContext: context) as! Image object.relation = whatever (NSManagedObject) 所以CoreDa

我有很多具有关系的CoreData模型,例如:

一项任务可以有人、组、图像等

通常,如果用户使用关系创建新对象,我会在这里使用CoreData关系。比如:

let object = NSEntityDescription.insertNewObjectForEntityForName("Images", inManagedObjectContext: context) as! Image
object.relation = whatever (NSManagedObject)
所以CoreData在SQLite中创建了一个关系,一个数字ID

当我在where子句中使用NSManagedObject时,使用谓词我可以很容易地获得所有相关的对象

但是,现在我需要将许多模型与后端同步,使用RemoteID处理关系要好得多。比如:

let object = NSEntityDescription.insertNewObjectForEntityForName("Images", inManagedObjectContext: context) as! Image
object.taskid = 'dhjfdsf-31232-321das321-3232'
如果我现在使用一个谓词(并且有很多数据),那么当我使用我的RemoteID(GUID)作为过滤器时,会有什么性能差异

那么,我是否应该在CoreData中不创建任何关系(因为我不再需要它们),并且不在性能问题中运行?在这里使用谓词(字符串)获取CoreData中的所有对象,或者使用相关的NSManagedObject,有什么区别吗


提前谢谢

您可以创建本地ID和远程ID。对于本地对象,应用程序的性能将很好,远程对象可用于筛选出本地对象w.r.t服务器(即,更新任何特定对象,或删除父模型不再需要的所有本地子/关系对象)。这样,您的同步过程将得到处理