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对象?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)