2010-11-28 13 views
2

は、私は、しかし、私は少し問題を抱えています、コアデータでオブジェクトを更新する方法を実証し、このコードサンプルを持っています私が「YourEntityName」の代わりに使うべきものは、データモデルからエンティティ名を使用する必要があるということですが、それはうまく動作していないと私は単に宣言されていないエラーが発生します。CoreDataオブジェクトの更新問題

「イベント」という名前のエンティティがあり、そのエンティティにuserNoteとtimeStampという2つの属性があります。

私はコアデータを使用して本質的に全く新しいクリーンスプリットビューipadプロジェクトでこれを使用しています。私はtextViewDidEndEditingでこれを実行したいので、ユーザーがメモを入力し終えたら、そのオブジェクトを更新します。

答えて

2

YourEntityNameは、エンティティを表すのに使用されるクラスの名前に置き換えてください。 Xcodeでエンティティのカスタムクラスを宣言した場合は、そのクラスをここで指定します。あなたのケースでは、エンティティのカスタムクラスを宣言していないようです。その場合、エンティティクラスとしてNSManagedObjectを使用してください。

Xcodeのデータモデルエディタでは、エンティティの名前とクラスの両方を指定できます。彼らは同じことではありません。エンティティ名は、このような文で実体を参照するために使用されます。

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext]; 

エンティティクラスは、そのエンティティの管理対象オブジェクトに使用するクラスを指定します。コアデータを使用する場合、開発者はエンティティに使用するカスタムクラスを作成することがよくありますが、そうする必要はありません。エンティティにカスタムクラスを使用する場合は、そのクラスを独自に(NSManagedObjectのサブクラスとして)作成し、そのクラス名をXcodeのデータモデルエディタで指定する必要があります。カスタムクラスを指定しないと、エンティティオブジェクトを表すのにNSManagedObjectが使用されます。

+0

ああ、これは私がオブジェクトを更新するためにこれを実行するとき、今すぐ涼しい働いた:thisYourEntityName.userNote = @ "新しい値";明らかに構造物や組合の一部ではない。 –

+1

コアデータを使用しているときにドット表記を使用して属性にアクセスできるだけでなく、パフォーマンス上の理由からも使用することをお勧めします。コアデータに関連する最新のWWDC 2010セッションでこれを確認できます。 –

+0

@unforgiven優れたポイント。私は間違ったコメントを削除し、それを(うまくいけば)より良いものに置き換えます。私のエラーを指摘してくれてありがとう! –