我有一個核心數據對象,Account
,表示爲NSManagedObject
一個子類:iOS - 核心數據模型與郵件框架衝突?
@interface Account : NSManagedObject
我的整個應用程序已經發展得很好,但是,當我加入MessageUI.framework
這樣我就可以得到一個撰寫郵件視圖控制器,所有的地獄都打破了。該應用程序鏈接和編譯好,運行得很好。直到,也就是說,我開始與之前工作的Account
對象進行交互。於是,我開始讓這些:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '"Account" is not a subclass of NSManagedObject.'
*** First throw call stack:
(0x202b012 ... 0x2385)
libc++abi.dylib: terminate called throwing an exception
其中這種特殊的一個是由引起:
// we need to insert a new account
Account *newAccount = [NSEntityDescription
insertNewObjectForEntityForName:[Account entityName]
inManagedObjectContext:self.managedObjectContext];
現在,我猜有一些班級在MessageUI.framework
導致衝突,但我有幾個問題:
- 的應用程序編譯和運行得很好,沒有編譯時的名字在框架原理相沖突
- 其他組件ork似乎是前綴命名空間(即:
MFMailComposeViewController
),那麼理論賬戶不應該是MFAccount
? - 我甚至沒有做
#import <MessageUI/MessageUI.h>
或稍微嚴格的#import <MessageUI/MFMailComposeViewController.h>
,後者我檢查並沒有看到Account
的定義,所以我不確定爲什麼可能的衝突甚至會被加載。 - 爲了確定,我重新生成了我的Core Data類,並重置了所有模擬器設置,但仍然沒有骰子。
- 立即從項目中刪除框架並立即構建設置可以解決問題。
你試過重命名你的NSManagedObject子類嗎? – geraldWilliam
@geraldWilliam:雖然我認爲這可以彌補這種情況,但我寧願不命名空間模型,如果沒有必要的話。我真的問過這個問題,因爲我想知道我錯過了什麼,因爲我的所有調查都導致了死路一條,如果這種情況或其他類似情況再次出現,我希望能夠解決它快速,直觀。 – Josh
當然有道理。只是當我遇到類似的情況時,我已經命名了託管對象的子類「Message」,我只是將其重命名並解決了問題。繼續前進,我只是用一個前綴命名所有託管對象的子類,以避免這個問題。 – geraldWilliam