我发现了这个很棒的NSManagedObjectID。这对于引用实体/NSManagedObject/NSEntityDescription非常有用,对吧?
让我们从一个实体获取一个ID:
NSEntityDescription *entity = [self newEntity];
NSManagedObjectID *objID = [entity objectID];所以..。你知道怎么把这个objID变成一个字符串吗?或者更好: NSData。实际上是一些能够将其保存到NSUserDefaults的东西。;-)
顺便说一句: NSFetchRequest不想在我的情况下工作。我使用了这个示例的一个修改版本:answer of an old question。
发布于 2009-02-05 16:45:29
获取与NSManagedObject的objectID相对应的存档URI
NSManagedObject* myMO;
...
NSURL *uri = [[myMO objectID] URIRepresentation];
NSData *uriData = [NSKeyedArchiver archivedDataWithRootObject:uri];为了返回到原始托管对象的实例,您需要一个具有持久化存储的CoreData堆栈,该存储保存已经添加到NSPersistentStoreCoordinator中的实例。然后:
NSData *uriData;
NSPersistentStoreCoordinator *psc;
NSManagedObjectContext *moc; //with moc.persistentStoreCoordinator = psc.
...
NSURL *uri = [NSKeyedUnarchiver unarchiveObjectWithData:uriData];
NSManagedObjectID *moID = [psc managedObjectIDForURIRepresentation:uri];
NSManagedObject *myMO = [moc objectWithID:moID];发布于 2009-02-05 16:37:07
从NSManagedObjectID documentation
可以将
对象ID转换为URI表示形式,该URI表示形式可以存档并在以后重新创建以引用给定对象(使用managedObjectIDForURIRepresentation:(NSPersistentStoreCoordinator)和objectWithID:(NSManagedObjectContext)。例如,应用程序中最后选定的组可以通过组对象的ID存储在用户默认设置中。您还可以使用对象ID URI表示法跨持久性存储存储“弱”关系(在这种情况下不可能进行硬联接)。
只需将其转换为URL,然后将其转换为字符串或数据。
发布于 2009-02-05 16:28:57
你看过URIRepresentation吗?很容易将NSURL转换为NSString,然后再转换为NSData。
https://stackoverflow.com/questions/516443
复制相似问题