ios – 如何从特定对象ID获取Core Data对象?

ios – 如何从特定对象ID获取Core Data对象?,第1张

概述我可以很容易地得到一个对象的ID在Core Data使用下面的代码: NSManagedObjectID *moID = [managedObject objectID]; 然而,有没有办法通过给它一个特定的对象ID从一个对象出来的核心数据存储?我知道,我可以这样做通过使用NSFetchRequest,像这样: NSFetchRequest *fetchRequest = [[NSFetchReq 我可以很容易地得到一个对象的ID在Core Data使用下面的代码:

NSManagedobjectID *moID = [managedobject objectID];

然而,有没有办法通过给它一个特定的对象ID从一个对象出来的核心数据存储?我知道,我可以这样做通过使用NSFetchRequest,像这样:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];NSEntityDescription *entity = [NSEntityDescription entityForname:@"document" inManagedobjectContext:managedobjectContext];[fetchRequest setEntity:entity];nspredicate *predicate = [nspredicate predicateWithFormat:@"(objectID = %@)",myObjectID];[fetchRequest setPredicate:predicate];

但是,我想这样做,不会启动自己的提取请求。有任何想法吗?

解决方法 你要:

-(NSManagedobject *)existingObjectWithID:(NSManagedobjectID *)objectID                                   error:(NSError **)error

从具有该ID的存储中获取对象,如果不存在,则为nil。

(注意:NSManagedobjectContext中有两个方法,类似的名字使我失望,为了帮助他们保持直线,其他两个方法:

-(NSManagedobject *)objectWithID:(NSManagedobjectID *)objectID

…将使用提供的objectID创建一个故障对象,无论这种对象是否实际存在于商店中。如果它不存在,任何触发故障的事都会失败,除非你首先使用NSManagedobjectContext的insertObject:插入对象。我发现的唯一用途是将对象从存储复制到存储,同时保留ObjectID。

-(NSManagedobject *)objectRegisteredForID:(NSManagedobjectID *)objectID

…将返回具有该ID的对象,如果它已通过此managedobjectContext从存储获取。如果任何人知道这种方法是有用的,请评论。)

[eta .:第一种方法和另外两种方法之间的另一个重要区别是,existingObjectWithID:error:从不返回错误;它总是为你取得整个对象。如果你想避免这种情况(例如使用一个big blob属性的昂贵的fetch对象),你必须聪明与objectWithID:或objectRegisteredForID :,不触发故障;或使用正确配置的提取请求。]

总结

以上是内存溢出为你收集整理的ios – 如何从特定对象ID获取Core Data对象?全部内容,希望文章能够帮你解决ios – 如何从特定对象ID获取Core Data对象?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1049256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存