2011-12-16 8 views
0

私はXcodeの4.2でARC(iOSの5)にXcodeの3(iOSの4.3)プロジェクトを変換しようとしているが、私はしようとすると、プロジェクトを事前にチェックするには、移動する前に修正する必要のあるさまざまなエラーが発生します。コアデータ:「インスタンスの受信機タイプはセレクターでメソッドを宣言していない...」

* "レシーバタイプセレクタ 'gradable' *とのメソッドを宣言していないインスタンスメッセージの '割り当て'

:これらのエラーのいずれかが、次のメッセージであります割り当ては、データ管理オブジェクトの中心であり、グラデーションは、プロパティ...

ここ

が、私はエラーを取得していラインです:

if ([[[[assignment gradable]description]description] isEqualToString:@"true"]) { 

そしてここでは、理解を容易にするためである:だから

for(int i = 0; i < [assignmentArrays count]; i++) { 
     for (Assignment* assignment in [assignmentArrays objectAtIndex:i]) { 
      if ([[[[assignment gradable]description]description] isEqualToString:@"true"]) { 
       [[gradableAssignmentsArray objectAtIndex:i] addObject:assignment]; 
      } 
     } 
    } 

[assignmentArrays release]; 

私はそれを正しく理解すれば、私は、メソッドを宣言する必要がありますだから私はここでそれを使うことができます...しかし、コアデータオブジェクトであるので、私は少しこれを混乱させています...私はいくつかの研究を行いましたが、コアデータに関連するものは何も見つかりませんでした。

ありがとうございます!!! :)

+0

あなたは 'assignment.gradable'を試しましたか? – jcm

+0

@jcmはい私は...働いていませんでした...しかし、チップのおかげで! ;) – Johan

答えて

2

Do [assignment valueForKey:@"gradable"]あなたがサブクラスを持たないNSManagedObjectの場合、コンパイラを静かにする必要がありますが、そのオブジェクトにキー "グラデーション"がない場合は、実行時例外が発生し、クラッシュします。あなたはNSManagedObjectサブクラス化し、何か他のものを使用したい場合
を(あなたも、サブクラスでそれを使用することができます)そのvalueForKey(文字列があるので、より多くのエラーが発生しやすい)、コンパイラはそれを見つけることができますので、そのサブクラスでプロパティを宣言。 .mでは、このような場合には@synthesisを使用することはありませんが、基本的には、コンパイラを語っている@dynamicキーワードは、私は、このプロパティの実装を持っていないが、実行時に、あなたは1を持っています。そしてそれはCore Dataによって提供されるでしょう。

+0

ありがとう@VinceBurn、今夜私のコンピュータに戻ってみると、私はそれを試してみる...私はあなたに知らせる... – Johan

関連する問題