我正在开发一个简单的笔记应用程序,我在数据模型中创建了一个名为“Note”的实体,该实体只有一个名为“content”的属性,类型为nsstring。
现在我在数据模型部分使用editor / create NSManagedObject子类来关注Note类。
在我的创建备注视图控制器中,我将数据保存到prepareForSegue方法中的数据库,如下所示:
@implementation NOCreateNotesViewController
- (NSManagedObjectContext *) managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if (sender != self.saveButton) return;
if (self.noteText.text.length > 0) {
self.note = [[Note alloc] init];
self.note.content = self.noteText.text;
}
NSManagedObjectContext * context = [self managedObjectContext];
// creating a new managed object
NSManagedObject *newNote = [NSEntityDescription insertNewObjectForEntityForName:@"Note" inManagedObjectContext:context];
[newNote setValue:self.noteText.text forKey:@"content"];
NSError * error = nil;
if ([context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
}
但不是我想通过这种方式传递用户想要编辑的对象(意味着表视图中所选行中的注释):
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"editeNote"]) {
NSManagedObject * selectedNote = [self.notes objectAtIndex:[self.tableView indexPathForSelectedRow].row];
NOCreateNotesViewController * destination = [segue destinationViewController];
destination.note = selectedNote;
}
}
显然,我无法使用指向NSManagedObject的指针传递一个Note对象...这是因为我想更新我的Note实体,如果这是一个编辑segue而不是创建一个新的。
在他们教授的tutorial I learned core data basics from中,只需动态创建对象,并注意使用编辑器/创建NSManagedObject子类的对象的自定义类,所以我有点困惑..
请帮忙
答案 0 :(得分:1)
NSManagedObject * selectedNote = [self.notes objectAtIndex:[self.tableView indexPathForSelectedRow].row];
希望成为:
Note * selectedNote = [self.notes objectAtIndex:[self.tableView indexPathForSelectedRow].row];
为什么要在prepareForSegue中将数据保存到模型中?当然,视图中有一个“保存”或“完成”按钮?