我有三個類,A,B和C. A是主類。iPhone核心數據 - 不能履行故障錯誤
當用戶想要查看所購買的所有對象的列表時,將從A中調用B類,並顯示核心數據實體中的對象列表。
在B類內部,用戶可以購買新對象(應用內購買)。當用戶想要購買另一個對象時,就會調用C類。
當C類被調用時,則使用
anObject = [NSEntityDescription insertNewObjectForEntityForName:@"Objects" inManagedObjectContext:context];
那麼這個對象被分配給有關類別C的本地參考,使用類似
self.object = anObject;
核心數據實體創建一新的對象
這個對象變量是這樣聲明的:
.h
MyObjects *object;
@property (nonatomic, retain) MyObjects *object;
and @synthesized on .m
MyObjects是一個核心數據c lass代表實體。
從理論上講,對象將保留任何分配給它的對象,所以行self.object = anObject我之前輸入的將保留self.object上的對象引用,對嗎?
問題是,當我嘗試在購買新對象後訪問同一類中的self.object時,收到錯誤「CoreData無法完成XXX的錯誤」,其中XXX正好是self.object。
代碼中沒有任何對象從數據庫中刪除。對於我能識別的數據庫唯一的操作是在崩潰之前的另一個課程完成的保存操作。保存是通過類似
if (![self.managedObjectContext save:&error]) ...
是否有任何關係?可能是什麼原因造成的?
好。現在我正在做你說的話。我在創建對象時保存objectID引用,然後使用objectWithID檢索它,並且它仍然在同一行中崩潰,也就是說,在檢索對象後我正好嘗試設置其屬性。 – SpaceDog
我們將需要查看當您存儲id時的代碼,然後再檢索該對象。 –
問題是這樣的:如果我打印控制檯使用objectWithID檢索它後得到的對象是這樣的:**(entity:Objects; id:0x1b6ca0 ; data:)**,我認爲是一個錯誤。現在的問題是我如何「無故」...... –
SpaceDog