我有许多关系的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,这有什么区别?
提前致谢!
答案 0 :(得分:0)
您可以创建本地以及远程ID。对于本地应用程序,应用程序的性能会很好,远程可以用来过滤掉服务器上的本地对象。(即更新任何特定对象,或删除不再需要的所有本地子/关系对象)与父模型)。这样,您的同步过程就会得到处理。