0

CoreData アプリで、いくつかの属性を持つエンティティを作成しました。テーブルビューとバインドされた NSArrayController を想像してください。両方を使用して、エンティティの「インスタンス」を作成 (および編集) します。私の質問は、これらの属性の値をコードに取得する方法です。さらに質問がある場合: http://twitter.com/xP_ablo

4

2 に答える 2

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];

これで、配列内の値を使用して好きなことを行うことができます。

于 2009-01-30T21:02:32.983 に答える
1

これが正しければ、データにバインドされた NSArrayController にバインドされた TableView があります。

簡単な方法: クラス (通常はファイルの所有者) に IBOutlet を作成し、Interface Builder でこの IBOutlet を NSArrayController に接続します。その後、この配列から必要な値を取得できます。

于 2009-01-30T16:15:21.580 に答える