2010-03-27 81 views
7

我在iPhone SDK中使用CoreData。我正在制作一个笔记应用程序。我有一张表格,里面有从我的模型中显示的笔记对象。当按下按钮时,我想将textview中的文本保存到正在编辑的对象中。我该怎么做呢?我一直在尝试几件事,但似乎没有任何工作。在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中选择的那个。

回答

14

您应该查看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]],然后编辑该对象。我还建议使用属性声明的NSManagedObject的自定义子类,而不是使用setValue:forKey,因为它更灵活。

+0

谢谢,实际上刚刚解决了这个问题。不得不稍微修改一下,因为我正在使用iPad,但基本上使用相同的代码。谢谢 – John 2010-03-27 20:46:21