0

Core Data のエンティティに接続されている NSArrayController があります。Delegate からオブジェクトを追加できるように、NSArrayController に IBOutlet をアタッチしました。

いくつかのプリセットを使用してオブジェクトを NSArrayController に追加しようとしています。これまでのところ、を使用してオブジェクトを追加する方法を見つけました。

[cards add:sender];

これは機能しますが、空のオブジェクトが追加されます。アプリを終了すると、このオブジェクトがエンティティに保存されるため、再度希望したときにまだそこに残っています。

しかし、プリセットを使用して新しいオブジェクトを作成する方法も見つけましたが、最後の方法のように保存されません。

NSDictionary *addedObject = [NSDictionary dictionary];
addedObject = [NSDictionary dictionaryWithObjectsAndKeys:@"TITLE", @"title",
@"CONTENT", @"content", nil];
[cards addObject:addedObject];

プリセットを使用して新しいオブジェクトを作成し、それを保存する他の方法はありますか? 私は Core Data を初めて使用するので、このすべてについて 100% ではありません。おそらく、実際のエンティティへのポインタを作成し、そこから編集する方法はありますか?

4

3 に答える 3

3

Either subclass NSArrayController and re-implement the add function, or subclass your entity and re-implement awakeFromInsert. Both are acceptable places for preset object values.

In the case of NSArrayController subclassing:

@implementation CardsArrayController

-(void) add:(id)sender {
    NSManagedObject *newItem = [self newObject];
    //do object set up here...
    [self addObject:newItem];
}

@end
于 2013-03-11T16:39:33.930 に答える
0

どちらの方法でオブジェクトを追加しても、managedObjectContext参照を取得してコンテキストを保存すると、オブジェクトが保存されます。

Apple が提供する定型コードを使用している場合は、次のコードを使用できます。

NSError *error;
AppDelegate *appD = [NSApp delegate];
[appD.managedObjectContext save:&error];

または、電話することもできます[appD saveAction:Nil]。これはまた、コンテキストを保存する前に編集をコミットしようとします。

または、ボタンをsaveAction:(これはですIBAction) に接続して、ボタンのクリック時にコンテキストを保存することもできます。

編集:また、配列コントローラーから作成されたオブジェクトは空白である必要はありません。それはあなた次第です。テキストフィールド (または他の編集可能な UI 要素) から へのバインディングを使用して、arrayControllerこれを行うことができます。またはcontent、配列のプロパティを取得してオブジェクトにアクセスし、編集することもできます。または、配列コントローラーをまったく使用せずに、コードを介してオブジェクト全体を追加することもできます。多くの方法があります。

于 2013-03-11T19:08:24.790 に答える