モデルでプレーンな古いNSNumbers(または他のもの)を使用できます。カスタムモデルクラスを使用する必要はありません。ただし、モデルデータにビュー用の特別な書式が必要な場合は、NSValueTransformerサブクラスを作成することができます。
NIBには、NSTableViewとNSArrayControllerがあります。
TableView列のValueプロパティをNSArrayController、controllerキー= arrangedObjectsにバインドします。モデルキーパスは空です(NSNumberインスタンス自体を表示しているため、NSNumberのプロパティではないため)。
NSArrayControllerのコンテンツ配列プロパティをモデル(NSNutableのNSMutableArray)にバインドします。これは、おそらくView ControllerまたはApp Delegateのプロパティです。
それはそれです。また、ボタンをNSArrayControllerのadd:
とremove:
アクションにフックアップすると、配列に項目を追加したり削除したりすることができます。
また、NSMutableArrayが変更されるたびにKVO通知を送信する必要があります。たとえば、あなたのNSMutableArrayのが「数字」というプロパティを介して公開されると言う:
[self willChangeValueForKey:@"numbers"];
[_numbers addObject:[NSNumber numberWithInt:123]];
[self didChangeValueForKey:@"numbers"];
あなたが新しい値に「番号」プロパティを設定する場合は、無料でこれらの通知を得る:
self.numbers = [NSMutableArray arrayWithObject:foo];
あなたは」また、適切な名前の変更可能アクセサメソッドを実装して使用する場合は、これらの通知を無料で取得します。詳細はこちら:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/AccessorConventions.html。要するに、実装する: ' - (NSUInteger)countOfNumbers; - (NSNumber *)objectInNumbersAtIndex:(NSUInteger)index; - (void)insertObject:(NSNumber *)aNumber inNumbersAtIndex:(NSUInteger)index; - (void)removeObjectFromNumbersAtIndex:(NSUInteger)index; - (void)replaceObjectInNumbersAtIndex:(NSUInteger)withObject:(NSNumber *)aNumber' –
実装*と*を使用します。単にそれらを実装しても、配列と直接話したり、KVO通知を受け取ることはできません。あなたは通知を引き起こすためにそれらのアクセサーメッセージを自分自身に送る必要があります(あるいは 'will' /' didChangeValueForKey: 'のすべてをラップする必要があります)。 –