Сохраните объект в CoreData

Я использую CoreData с iPhone SDK. Я делаю приложение примечаний. У меня есть таблица с объектами примечания, отображенными из моей модели. Когда кнопка нажимается, я хочу сохранить текст в textview к отредактированному объекту. Как я делаю это? Я пробовал несколько вещей, но ни один, кажется, не работает.

Спасибо

Править:

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
задан John 27 March 2010 в 20:19
поделиться

1 ответ

Вам следует ознакомиться с Руководством по программированию основных данных . Трудно точно сказать, что вы хотите от вопроса, но основная идея такова:

-(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]] , затем отредактируйте этот объект. Я также рекомендовал бы использовать собственный подкласс NSManagedObject с объявлениями свойств вместо использования setValue: forKey , поскольку он более гибкий.

14
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: