具有Relation的CoreData性能(RemoteID和内部ID)

时间:2016-01-11 15:35:33

标签: ios swift core-data

我有许多关系的CoreData模型 - 例如:

任务可以包含人员,群组,图像,..

通常我会在这里使用CoreData Relations,如果用户创建一个具有关系的新对象。像:

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'

如果生病了,现在使用一个谓词(并且有大量数据) - 当我用作过滤器我的RemoteIDs(GUID)时会产生任何性能差异吗?

所以我应该在CoreData中创建没有任何关系(因为我不再需要它们)并且不会遇到性能问题?使用谓词作为(字符串)获取CoreData中的所有对象,或使用相关的NSManagedObject,这有什么区别?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以创建本地以及远程ID。对于本地应用程序,应用程序的性能会很好,远程可以用来过滤掉服务器上的本地对象。(即更新任何特定对象,或删除不再需要的所有本地子/关系对象)与父模型)。这样,您的同步过程就会得到处理。