我Core Data
Entity
在我的一个课程中创建了一个带有魔法记录的文件。我保存上下文并将其分配Entity
给自定义 Cell 对象的属性。
然后我将单元格对象传递给另一个显示它的类。在某个随机点,Entity
的属性变为 nil。
我仍然可以Entity
在数据库中找到并且仍然有效。单元对象在任何时候都不会取消引用(它存储在类属性数组中)。
因此,在我的程序中的某一时刻,这里是Entity
:
2013-05-08 13:58:51.425 DEBUG | -[DatasetSubBar doesCellArray:containCellWithDataset:] | cell.dataset: <SavedAnalysis: 0x22b0a4d0> (entity: SavedAnalysis; id: 0x22bba720 <x-coredata://42CA4347-1DF1-4C6B-AB44-03EFE3D86F3A/SavedAnalysis/p110> ; data: {
createDate = "2013-05-08 18:58:00 +0000";
name = "Unsaved Analysis";
})
几秒钟后:
2013-05-08 13:58:54.417 DEBUG | -[DatasetSubBar createDisplayPanelCells] | cell.dataset.name: (null)
2013-05-08 13:58:54.417 DEBUG | -[DatasetSubBar createDisplayPanelCells] | cell.dataset: <SavedAnalysis: 0x22b0a4d0> (entity: SavedAnalysis; id: 0x22bba720 <x-coredata://42CA4347-1DF1-4C6B-AB44-03EFE3D86F3A/SavedAnalysis/p110> ; data: <fault>)
指向实体的指针仍然存在,但 name 属性为 nil。
我检查了数据库,实体仍然存在:
Dataset *test = [Dataset MR_findFirstByAttribute:@"imageHandle" withValue:self.testImageHandle inContext:[NSManagedObjectContext MR_contextForCurrentThread]];
DLog(@"MR_contextForCurrentThread | lost dataset: %@", test);
.
2013-05-08 13:58:54.408 DEBUG | -[DatasetSubBar createDisplayPanelCells] | MR_contextForCurrentThread | lost dataset: <SavedAnalysis: 0x1e8157a0> (entity: SavedAnalysis; id: 0x22bba720 <x-coredata://42CA4347-1DF1-4C6B-AB44-03EFE3D86F3A/SavedAnalysis/p110> ; data: {
createDate = "2013-05-08 18:58:00 +0000";
name = "Unsaved Analysis";
})
我很困惑Entity
' 的属性将变为 nil 而它Entity
本身仍然被引用并且实体仍在数据库中。我正在使用 ARC。