1

「Person」タイプと「PreparesContent」タイプのCore-Data-Entitiesを含むモード「Entity」で構成されたNSArrayControllerがあります。他のすべてのプロパティはデフォルトです。予想どおり、このarraycontrollerは、(ボタンクリックで)新しいPerson-entitiesを作成すると、そのarrangedObjectsを更新します。

-(IBAction)addEntity:(id)sender{
  Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person"
                           inManagedObjectContext:[self managedObjectContext]];
  new.text = @"text";
  new.date = [NSDate date];
}

ビューベースのNSTableViewのコンテンツをこのarrayControllerの「arrangedObjects」プロパティにバインドして、Personsを表示しました。1つの列に、TableCellViewの「objectValue.text」プロパティにバインドされた編集可能な(ただしデフォルトの)NSTextFieldがあります。

テーブル内の「text」プロパティを編集して別の人を追加すると(テーブルセルがまだ編集モードになっている間に)、テーブルはフォーカスを失い、編集は終了し、新しい人がテーブルに表示されます。すべてがうまく見えます。

ただし、別の人を追加したい場合、arrayControllerはarrangedObjects-propertyを更新しません(arrayControllerのsetContent:が呼び出されなくなったことがわかりました)。

これは意図された動作ですか?

4

2 に答える 2

5

私は自分で答えを見つけました。テーブルを編集した後、NSManagedObjectContextObjectsDidChangeNotificationsが送信されていないことに気付きました(以前と同じように)。

このリンクは私を正しい方向に向けました。addEntity-methodを次のように変更した後、すべてが期待どおりに機能しました。

-(IBAction)addEintrag:(id)sender {
 Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person" 
                          inManagedObjectContext:[self managedObjectContext]];
 new.name = @"test";
 new.datum = [NSDate date];
 [self.managedObjectContext processPendingChanges];
}
于 2013-02-01T09:52:51.847 に答える
0

arrayControllerでオブジェクトを自動的に再配置する場合は、Interface BuilderのarrayControllerで[コンテンツの自動再配置]チェックボックスをオンにするか、setAutomaticallyRearrangesObjects:プログラムで使用します。

于 2013-01-31T21:31:02.373 に答える