当前位置:  开发笔记 > IOS > 正文

NSManagedObjectID进入NSData

如何解决《NSManagedObjectID进入NSData》经验,为你挑选了2个好方法。

我发现了这个很棒的NSManagedObjectID.这对于引用Entity/NSManagedObject/NSEntityDescription非常有用,对吧?
让我们从实体获取一个ID:

NSEntityDescription *entity = [self newEntity];     
NSManagedObjectID *objID = [entity objectID];

那么......任何想法如何将其objID变成字符串?或者更好:NSData.实际上可以将它保存到NSUserDefaults.;-)

顺便说一句:NSFetchRequest不想在我的情况下工作.我使用这个例子的修改版本:回答一个老问题.



1> Barry Wark..:

要获取与NSManagedObjects 对应的存档URI objectID:

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];



2> Louis Gerbar..:

从NSManagedObjectID 文档:

可以将对象ID转换为URI表示形式,该表示形式可以存档并稍后重新创建以引用回给定对象(使用managedObjectIDForURIRepresentation:(NSPersistentStoreCoordinator)和objectWithID :( NSManagedObjectContext).例如,可以存储应用程序中最后选择的组在用户默认通过组对象的ID.您还可以使用对象ID URI表示来存储跨持久存储的"弱"关系(其中不可能进行硬连接).

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

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有