CoreDataにオブジェクトを保存

core-data iphone
CoreDataにオブジェクトを保存

iPhone SDKでCoreDataを使用しています。 ノートアプリを作成しています。 モデルからノートオブジェクトが表示されたテーブルがあります。 ボタンが押されたときに、編集中のオブジェクトにテキストビューのテキストを保存したい。 これをどうやってやるの? 私はいくつかのことを試してきましたが、どれもうまくいかないようです。

ありがとう

編集:

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:detailViewController.textView.text forKey:@"noteText"];

NSError *error;
if (![context save:&error]) {
    /*
     Replace this implementation with code to handle the error appropriately.

     abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.
     */
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

上記のコードはそれを正しく保存しますが、新しいオブジェクトとして保存します。 tableViewで選択したものとして保存します。

  7  3


ベストアンサー

Core Data Programming Guideをご覧ください。 質問から何を望んでいるかを正確に知ることは困難ですが、基本的な考え方は次のとおりです。

-(IBAction)saveNote { //hooked up in Interface Builder (or programmatically)
    self.currentNote.text = self.textField.text; //assuming currentNote is an NSManagedObject subclass with a property called text, and textField is the UITextField
}

//later, at a convenient time such as application quit
NSError *error = nil;
[self.managedObjectContext save:&error];  //saves the context to disk

編集:既存のオブジェクトを編集する場合は、フェッチされた結果コントローラーからオブジェクトを取得する必要があります。 `NSManagedObject * currentObject = [fetchedResultsController objectAtIndexPath:[self.tableView indexPathForSelectedRow]]`で、そのオブジェクトを編集します。 また、 `setValue:forKey`を使用するのではなく、プロパティ宣言でNSManagedObjectのカスタムサブクラスを使用することをお勧めします。

14


タイトルとURLをコピーしました