2012-04-15 74 views
2

當我調用方法:CoreDataGeneratedAccessor方法給予「無法識別的選擇發送到實例」錯誤

- (void)removeObjectFromMediaAtIndex:(NSUInteger)idx; 

其是在作爲核心數據對象創建一個文件的默認方法之一,我發現了一個錯誤的unrecognized selector sent to instance。任何人都知道爲什麼會發生這種情況?

+0

您可以發佈其他錯誤消息嗎?如果我們知道發送了哪個選擇器,它可能會給我們提供線索。 – idz 2012-04-15 05:22:30

回答

7

確保您的NSManagedObject子實例是使用NSManagedObjectContext創建的,而不是直接創建的。 NSManagedObject子庫不是利用@synthesize作爲屬性,而是利用@dynamic關鍵字來指示訪問器將在運行時創建 - 在這種情況下,通過NSManagedObjectContext。如果你使用類似alloc [] init]的方式創建對象實例,它們將不會在那裏;

+0

您能否詳細說明一下?請給我看一個例子嗎?我使用 '[[ENTITY alloc] initWithEntity:[self getEntityDescription:[ENTITY className]] insertIntoManagedObjectContext:self.managedObjectContext];' 但這似乎是錯誤的方式根據你。 – 2014-02-23 10:49:22

+0

你正在做的事情沒有錯,與我所指的任何一種方法都不同。 – 2014-02-24 11:01:00

0

這聽起來像你可能改變了你的數據模型而不改變類,反之亦然。或者你的團隊成員之一(我的團隊很快就知道這個危險)。另一種可能性是你使用的引用實際上並不是你認爲的類。有時候如果你過度釋放一個對象,另一個對象將佔據先前的內存空間,但它不會是正確的類。

但是,這看起來不像默認方法。我習慣看到的默認方法是添加對象,刪除對象,更改爲新的NSSet,還有一個我無法完全記住我的頭頂。但是,如果您獲得CoreData對象而不是使用NSArray,則它是有意義的。

相關問題