更新/编辑coreData托管对象

los*_*ode 4 core-data ios

当用户基于cell.accessoryType单击UITableView中的单元格以显示是否已单击该项目时,我正在尝试编辑CoreData对象.这是当前的代码.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

NSManagedObject *itemToUpdate = [groceryArray objectAtIndex:indexPath.row];
NSLog(@"updating: %@", itemToUpdate);

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;
    itemToUpdate.purchased = NO;
}else {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    itemToUpdate.purchased = YES;
}

// Commit the change.
NSError *error;
if (![managedObjectContext save:&error]) {
    // Handle the error.
    NSLog(@"Saving changes failed: %@", error);

}
}
Run Code Online (Sandbox Code Playgroud)

它似乎是选择正确的对象,因为NSLog()将显示正确的项目,但当我尝试使用点表示法更新时,例如"itemToUpdate.purchased = YES;" 编译器抛出错误"请求成员'购买'的东西不是结构或联合".

我知道我可能做错了(我在xcode中的第一个项目) - 任何建议都将非常感谢!

谢谢

wes*_*der 6

你有没有尝试过:

[itemToUpdate setValue:[NSNumber numberWithBool:NO] forKey:@"purchased"]
Run Code Online (Sandbox Code Playgroud)

形成?

我总是子类NSManagedObject,点符号适用于声明的属性.但你可以试试这个"较旧"的符号来看看它是否有效.