更新/编辑coreDatapipe理对象

我试图编辑一个CoreData对象,当用户点击UITableView中的一个单元格基于cell.accessoryType来显示该项目是否被点击。 这是当前的代码。

- (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); } } 

它似乎是select正确的对象,因为NSLog()将显示正确的项目,但是当我尝试使用点符号更新,例如“itemToUpdate.purchased = YES;” 编译器抛出一个错误“请求成员”购买的东西不是一个结构或联盟“。

我知道我可能做错了(我的第一个项目在Xcode) – 任何意见将不胜感激!

谢谢

你有没有尝试过:

 [itemToUpdate setValue:[NSNumber numberWithBool:NO] forKey:@"purchased"] 

形成?

我总是子类NSManagedObject和点符号适用于声明的属性。 但是你可以试试这个“老”的符号来看看是否有效。

我想你创build了一个“NSManagedObject”的自定义子类作为属性之一的“购买”。 声明“itemToUpdate”作为这个子类的一个对象,而不是NSManagedObject:

 YourCustomSubclassOfNSManagedObject *itemToUpdate = [groceryArray objectAtIndex:indexPath.row];