NSManagedObjectID 到 NSData [英] NSManagedObjectID into NSData

查看:26
本文介绍了NSManagedObjectID 到 NSData的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I found this wonderful NSManagedObjectID. This would be very good for referencing an Entity/NSManagedObject/NSEntityDescription, right?
Let's get an ID from an entity:

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

所以...知道如何将此 objID 转换为字符串吗?或者更好:NSData.实际上可以将其保存到 NSUserDefaults 中.;-)

So... any idea how to get this objID into a string? Or better: NSData. Actually something to be able to save it to the NSUserDefaults. ;-)

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

Btw: NSFetchRequest doesn't want to work in my case. I use an modified version of this example: answer of an old question.

推荐答案

获取与 NSManagedObjectobjectID 对应的归档 URI:

To get an archived URI corresponding to a NSManagedObject's objectID:

NSManagedObject* myMO;
...
NSURL *uri = [[myMO objectID] URIRepresentation];
NSData *uriData = [NSKeyedArchiver archivedDataWithRootObject:uri];

为了返回原始托管对象的实例,您需要一个 CoreData 堆栈,其中包含该实例的持久存储已经添加NSPersistentStoreCoordinator.那么:

In order to get back to an instance of the original managed object, you need a CoreData stack with the persistent store holding that instance already added to the NSPersistentStoreCoordinator. Then:

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

这篇关于NSManagedObjectID 到 NSData的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆