我正在尝试的是:
1)创建一个新的manged对象
2)使用[myMO objectID];
3)将该ID转换为NSURL,因此我可以将其保存以供将来参考:
NSManagedObjectID *moID = [myMO objectID];
NSURL *url = [moID URIRepresentation];
4)保存托管对象上下文
5)一段时间后,使用NSURL作为ID
获取该对象NSManagedObjectID *moID = [[context persistentStoreCoordinator] managedObjectIDForURIRepresentation:url];
猜猜:它不起作用。我从
返回一个空愚蠢的对象NSManagedObject *myOldMo = [context existingObjectWithID: moID error:&error];
但是......正如我所说的......创建托管对象时,ID是暂时的。因此,为什么这根本不起作用确实有意义。我必须首先保存上下文,然后我得到一个persistet ID。真实的。正确?
这是要走的路?
1)创建托管对象
2)保存上下文
3)获取ID为NSURL
4)以后任何时候,例如在你的下一个生日,使用NSURL访问托管对象; - )
我尝试将NSManagedObjectID想象成一个数据库ID,我可以在一些黄色的postIt表上写下并粘贴在我的显示器中间,所以我在午餐后再回头看它。你知道......至少就像过去我们通过telnet使用数据库并手动执行SQL命令来查询订单信息等等。身份证一直是最重要和最重要的事情。
但Core Data有一些奇怪的NSManagedObjectID事情。
你的秘密策略是什么?您是否真的认识到需要NSManagedObjectID的许多用例?或者那是我以后可以轻易忘记的事情吗?
答案 0 :(得分:11)
我不确定这是一个如此大的秘密。该文档描述了从NSManagedObjectContext
:
- (BOOL)obtainPermanentIDsForObjects:(NSArray *)objects error:(NSError **)error