2011-09-14 38 views
0

保存核心數據上下文時,出現以下錯誤。 我真的不知道從哪裏開始看,如果你有一個領導... 謝謝。CoreData誤解對象類

PS:我檢查了.h文件中聲明的所有類型與我的數據模型中的相同。

編輯:我覆蓋了NSDate類intValue。現在我看到timeIntervalSinceReferenceDate在NSNumber上被調用。我試圖在那裏放置一個斷點,但它沒有提供任何信息(只保存:在我的代碼之前)。我還發現了一種方法來知道誰是那些着名的對象:NSDate是一個對象(稱爲lastCompute)與NSNumber(稱爲sleep)在同一個類中。它們的類型匹配在.h和數據模型中聲明的類型。但是它沒有給我提示爲什麼CoreData在NSDate上調用intValue。任何主角?由於

-[__NSDate intValue]: unrecognized selector sent to instance 0x6a3cba0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDate intValue]: unrecognized selector sent to instance 0x6a3cba0' 
*** Call stack at first throw: 
(
    0 CoreFoundation      0x01ca35a9 __exceptionPreprocess + 185 
    1 libobjc.A.dylib      0x01df7313 objc_exception_throw + 44 
    2 CoreFoundation      0x01ca50bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation      0x01c14966 ___forwarding___ + 966 
    4 CoreFoundation      0x01c14522 _CF_forwarding_prep_0 + 50 
    5 CoreData       0x00955b50 -[NSSQLiteConnection execute] + 2320 
    6 CoreData       0x009a7ebd -[NSSQLiteConnection updateRow:] + 365 
    7 CoreData       0x009a6e64 -[NSSQLConnection performAdapterOperations:] + 180 
    8 CoreData       0x009a6b0e -[NSSQLCore _performChangesWithAdapterOps:] + 494 
    9 CoreData       0x009a55ea -[NSSQLCore performChanges] + 410 
    10 CoreData       0x0099f038 -[NSSQLCore saveChanges:] + 216 
    11 CoreData       0x0095d199 -[NSSQLCore executeRequest:withContext:error:] + 409 
    12 CoreData       0x00a0d70b -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 3691 
    13 CoreData       0x00995948 -[NSManagedObjectContext save:] + 712 
+0

一些代碼在哪裏實際上可以節省? – Eimantas

+0

是的,沒有人可以真正解釋這個以及代碼。 – darksky

+0

- [__ NSDate intValue]:無法識別的選擇器SAYS IT ALL。 NSDate對象沒有intValue函數。 – Zigglzworth

回答

1

我想我解決了可供您使用的工具問題。
我試圖刪除NSDate屬性。一個新的錯誤出現了(解釋here)。所以我檢查了我的所有[NSNumber numberWithSomething:],並且發現我將用int創建的數字放在數據模型中聲明爲float的屬性中。
我修復了所有這些錯誤,重新添加了NSDate,現在我的應用程序不再崩潰。我希望這是解決方案,即使它與在NSDate上調用intValue無關。

2

因爲你調用該方法的intValue的NSDate對象[NSDate的日期]你得到這個錯誤。 如果你需要做的日期作爲時間間隔的東西,不是使用

[[NSDate date] timeIntervalSince1970] 

,或者如果你需要比較兩個日期,不是做這樣的事情:

NSDate *startDate = (...some start date); 
NSDate *endDate = (...some end date); 

NSTimeInterval intervalInSeconds = [endDate timeIntervalSinceDate:startDate]; 
+0

我沒有嘗試任何這一點。我在我的模型中存儲日期和數字,我不認爲這應該是一個問題。我的問題是找到誰被稱爲intValue,我知道哪個對象,但我不知道這個對象在我的代碼中。你需要更多的信息來幫助我嗎? –

0

因爲你改了屬性和你期望的操作沒有正確執行,這聽起來像你沒有正確處理數據模型的版本控制。

確保你刷上了this。更妙的是,如果您的應用程序尚未發佈給公衆或測試人員和QA人員,那麼您可以從一個全新的數據庫開始,而不必擔心版本化和遷移。

雖然從頭開始是討巧,如果你計劃在將來使用CoreData你應該閱讀並理解版本的想法和XCode中4

+0

我刪除了應用程序並重新安裝了它(多次)。我仍然有同樣的問題。 –