首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进入NSData的NSManagedObjectID

进入NSData的NSManagedObjectID
EN

Stack Overflow用户
提问于 2009-02-05 15:44:51
回答 6查看 7.2K关注 0票数 14

我发现了这个很棒的NSManagedObjectID。这对于引用实体/NSManagedObject/NSEntityDescription非常有用,对吧?

让我们从一个实体获取一个ID:

代码语言:javascript
复制
NSEntityDescription *entity = [self newEntity];     
NSManagedObjectID *objID = [entity objectID];

所以..。你知道怎么把这个objID变成一个字符串吗?或者更好: NSData。实际上是一些能够将其保存到NSUserDefaults的东西。;-)

顺便说一句: NSFetchRequest不想在我的情况下工作。我使用了这个示例的一个修改版本:answer of an old question

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-02-05 16:45:29

获取与NSManagedObjectobjectID相对应的存档URI

代码语言:javascript
复制
NSManagedObject* myMO;
...
NSURL *uri = [[myMO objectID] URIRepresentation];
NSData *uriData = [NSKeyedArchiver archivedDataWithRootObject:uri];

为了返回到原始托管对象的实例,您需要一个具有持久化存储的CoreData堆栈,该存储保存已经添加到NSPersistentStoreCoordinator中的实例。然后:

代码语言:javascript
复制
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];
票数 39
EN

Stack Overflow用户

发布于 2009-02-05 16:37:07

从NSManagedObjectID documentation

可以将

对象ID转换为URI表示形式,该URI表示形式可以存档并在以后重新创建以引用给定对象(使用managedObjectIDForURIRepresentation:(NSPersistentStoreCoordinator)和objectWithID:(NSManagedObjectContext)。例如,应用程序中最后选定的组可以通过组对象的ID存储在用户默认设置中。您还可以使用对象ID URI表示法跨持久性存储存储“弱”关系(在这种情况下不可能进行硬联接)。

只需将其转换为URL,然后将其转换为字符串或数据。

票数 5
EN

Stack Overflow用户

发布于 2009-02-05 16:28:57

你看过URIRepresentation吗?很容易将NSURL转换为NSString,然后再转换为NSData。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/516443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档