2

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。

4

0 回答 0