在CoreData中保存对象

7
我正在使用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中选择的那个对象。
1个回答

14
你应该查看Core Data 编程指南。从问题中很难确定你具体需要什么,但基本思路是:
-(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,因为它更加灵活。


谢谢,实际上我已经解决了。因为我在使用iPad,所以不得不进行一些修改,但基本上是相同的代码。谢谢。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接