2011-09-14 4 views
0

私のコアデータコンテキストを保存するときに、次のエラーが発生します。 あなたがリードしていても、どこから見始めたらいいかわかりません。 ありがとうございます。CoreDataがオブジェクトクラスを誤って解釈する

PS:.hファイルで宣言されているすべての型が自分のデータモデルと同じであることを確認しました。

EDIT:NSDateのカテゴリにintValueを上書きしました。これで、timeIntervalSinceReferenceDateがNSNumberで呼び出されることがわかりました。私はそこにブレークポイントを入れようとしましたが、情報を与えません(save:私のコードの前にあります)。私はまた、有名なオブジェクトが誰であるかを知る方法を発見しました。NSDateは、NSNumber(スリープと呼ばれる)と同じクラスのオブジェクト(lastComputeと呼ばれます)です。それらの型は、.hとデータモデルで宣言された型と一致します。しかし、CoreDataがNSDateのintValueを呼び出す理由についてのヒントは私にはありません。すべてのリード?あなたはNSDateオブジェクト[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

を読んで理解バージョニングのアイデアをとXcode 4であなたのために利用できるツールなければならない私は解決だと思います問題。
NSDate属性を削除しようとしました。新しいエラーが発生しました(hereを参照)。だから、私はすべての[NSNumber numberWithSomething:]をチェックし、データモデルにfloatとして宣言された属性にintで作成した数値を入れていることがわかりました。
これらの間違いを修正し、NSDateを再追加しました。これで私のアプリはもうクラッシュしません。私はintValueがNSDateで呼び出されることとは関係がなくても、これが解決策であることを望みます。

2

あなたはそのエラーを取得します。あなたが変更したので

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

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

私はこれを試していません。私はモデルに日付と数値を格納していますが、これは問題ではないと思います。私の問題は、誰がintValueと呼ばれているかを知ることです。どのオブジェクトであるかはわかりますが、このオブジェクトはどこにありませんか?私を助けるためにもっと情報が必要ですか? –

0

:あなたはこのような何かを行うよりも、次の2つの日付を比較する必要がある場合

[[NSDate date] timeIntervalSince1970] 

かを使用するよりも、時間間隔として日付で何かをする必要がある場合 あなたが期待している操作が正しく実行されていない場合、データモデルのバージョン管理を正しく処理していないように思えます。

thisをブラッシュアップしてください。さらに、あなたのアプリケーションが一般公開されていない場合や、テスターとQAの人々にリリースされていない場合は、まったく新しいデータベースで始めることができ、まだバージョン管理と移行について心配する必要はありません。

ゼロからのスタートながら簡単な方法であるあなたは、将来的にCoreDataを使用する場合、あなたは本当に

+0

私は、アプリケーションを削除し、それを(複数回)再インストールしました。私はまだ同じ問題があります。 –

関連する問題