加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – NSManagedObject故障

发布时间:2020-12-16 06:57:31 所属栏目:百科 来源:网络整理
导读:我有一个NSManagedObject,它的一些属性在程序开始时初始化.当我稍后引用此对象时,它似乎出现故障,并且无法访问这些属性.我不确定我需要做什么. 这与添加到程序中的新功能相关,该程序已通过所有其他方式与核心数据平稳运行. 这是一个代码片段,它被初始化为单
我有一个NSManagedObject,它的一些属性在程序开始时初始化.当我稍后引用此对象时,它似乎出现故障,并且无法访问这些属性.我不确定我需要做什么.

这与添加到程序中的新功能相关,该程序已通过所有其他方式与核心数据平稳运行.

这是一个代码片段,它被初始化为单例的属性值. (我的代码的许多部分都可以访问该单例):

favoritesCollection = [[SearchTerms alloc] initWithEntity:[NSEntityDescription entityForName:@"SearchTerms" inManagedObjectContext:moc] insertIntoManagedObjectContext:moc];

    favoritesCollection.keywords = @"Favorites List";
    favoritesCollection.isFavoritesCollection = [NSNumber numberWithBool:YES];
    favoritesCollection.dateOfSearch = [NSDate NSCExtendedDateWithNaturalLanguageString:@"4000"];
    favoritesCollection.pinColorIndex = 0;  

    [moc save:&error];

    NSLog(@"(favoritesCollection) = %@",favoritesCollection);
}

return favoritesCollection;

当我使用NSLog查看favoritesCollection时,我看到了这一点(我添加了一些换行符以便于阅读):

(favoritesCollection) = 
<SearchTerms: 0x5c28820> 
(entity: SearchTerms; id: 0x5a6df90 
<x-coredata://3936E19F-C0D0-4587-95B6-AA420F75BF78/SearchTerms/p33> ; 
data: {
    dateOfSearch = "4000-09-25 12:00:00 -0800";...*more things after this*

返回后,另一个NSLog显示内容完好无损.

当我稍后引用此实例时,我可以在调试器中看到:

<SearchTerms: 0x5c28820> 
(entity: SearchTerms; id: 0x5a6df90 
<x-coredata://3936E19F-C0D0-4587-95B6-AA420F75BF78/SearchTerms/p33> ; 
data: <fault>)

就这样.

所以我相信该对象被保留(我明确地将它保留在返回的位置).我有僵尸,它看起来不像僵尸.

我在程序中只有一个managedObjectContext,在单例中维护.

那么发生了什么,以及如何获得保存的属性?

解决方法

你的对象没有任何问题,我认为你可能在这里误解了“错误”的含义.

来自Apple的文档:

“Faulting is a mechanism Core Data employs to reduce your
application’s memory usage…”

一旦您尝试访问任何对象的属性,它将在数据库中找到所有对象的属性.

更多细节在这里http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFaultingUniquing.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读