2012-01-20 7 views
0

nstableviewにバインドされたアレイコントローラがあります。また、ユーザーが入力して「追加」ボタンを押したnstextfieldがあります。私はフィールドfirst_nameとlast_nameをとり、それらを使ってエンティティを設定したいと考えています。エンティティPersonEntityを呼び出します。プログラムでエンティティを作成し、アレイコントローラに追加します。

追加ボタンの代理人では、2つのテキストフィールドの文字列値を取得し、エンティティを入力してから、配列コントローラに追加します。私はココア/客観的に新しいです。これは簡単なことのように思えるが、私が

PersonEntity* person 
[person setFirst_name:firstName]; 
[person setLast_name:lastName]; 
[customerArray addObject:person]; 

を期待するように私はそれは私が[customerArrayのaddObject:顧客]でnilを追加することはできませんと言ってクラッシュしたエンティティを作成することができないことが表示されますライン。その行は、テーブルビューにバインドされている配列コントローラにエンティティを追加しようとする私の試みです。このようなことをする正しい方法は何ですか?

+0

コンテキスト用のコードをもう少し投稿できますか?どのようなタイプの客が顧客ですか?人は割り当てられたことはありますか? – sbooth

+0

sbooth、私は顧客がいてはいけないコードを修正しました。人が割り当てられていない場合、人のalloc/initを実行するとクラッシュします。 – JonF

+0

人が割り当てられていない場合、それはおそらく問題です。 'PersonEntity * person = [[PersonEntity alloc] init]'がクラッシュした場合、問題の原因がもう一つあります。 'PersonEntity'のスーパークラスとは何ですか? – sbooth

答えて

3

PersonEntityがCore Data Entityであるかどうかはわかりませんが、質問にCore Dataというタグが付いているので、私はそれを仮定します。

ArrayController(NSTableViewにバインドされたもの)がCoreDataソースにバインドされている場合は、オブジェクトを直接追加しないでください。代わりにmanagedObjectContextに追加すると、NSTableViewに反映されます。

コードは次のようになります。

PersonEntity *person = [NSEntityDescription insertNewObjectForEntityForName:@"PersonEntity" 
             inManagedObjectContext: managedObjectContext]; 

[person setFirst_name:firstName]; 
[person setLast_name:lastName]; 

/* Save Event */ 
NSError * error = nil; 
[__managedObjectContext save: &error]; 

は、この情報がお役に立てば幸い! Mane

+0

、ありがとう – JonF

関連する問題