CoreData アプリで、いくつかの属性を持つエンティティを作成しました。テーブルビューとバインドされた NSArrayController を想像してください。両方を使用して、エンティティの「インスタンス」を作成 (および編集) します。私の質問は、これらの属性の値をコードに取得する方法です。さらに質問がある場合: http://twitter.com/xP_ablo
2 に答える
何らかの方法で NSArrayController への参照を取得する必要があります。自分で NIB をロードしている場合は、NIB の「ファイル所有者」として設定されているクラスに IBOutlet インスタンスを追加できます。nib をロードするときは、NIB の「ファイル所有者」クラスのインスタンスを所有者として提供します。NIB を自分でロードしない場合 (つまり、アプリの MaineMenu nib/xib として Cocoa によって自動的にロードされる場合)、nib に独自のクラスのインスタンスを作成し、そのインスタンスに IBOutlet を追加します。次のように、クラスに IBOutlet を作成します。
@interface MyClass : NSObject { //of course your class doesn't have to be a direct descendent of NSObject
IBOutlet NSArrayController *arrayController;
}
@property (retain,nonatomic,readwrite) IBOutlet NSArrayController *arrayController;
...
@end
@implementation
@synthesize arrayController;
- (void)dealloc {
[arrayController release];
[super dealloc];
}
@end
クラスの IBOutlet を NSArrayController に接続し (最初のケースではファイル所有者を、上の 2 番目のケースではクラスのインスタンスを Ctrl キーを押しながらクリックします)、NSArrayController にドラッグします。マウスを放すと、ドラッグ ソースの IBOutlets のポップアップが表示されます。作成した IBOutlet を選択します (上記の例では「arrayController」など)。
nib がロードされると (つまりawakeFromNib
、クラスで が呼び出された後)、アウトレット経由で arrayController にアクセスできます。
NSArray *content = [[self arrayController] arrangedObjects];
これで、配列内の値を使用して好きなことを行うことができます。
これが正しければ、データにバインドされた NSArrayController にバインドされた TableView があります。
簡単な方法: クラス (通常はファイルの所有者) に IBOutlet を作成し、Interface Builder でこの IBOutlet を NSArrayController に接続します。その後、この配列から必要な値を取得できます。