Обновление / редактирование управляемого объекта coreData - PullRequest
4 голосов
/ 03 декабря 2010

Я пытаюсь редактировать объект 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);

}
}

Кажется, что он выбирает правильный объект, потому что NSLog () покажет правильный элемент, но когда я пытаюсь обновить, используя точечную нотацию, например, "itemToUpdate.purchased = YES;»компилятор выдает ошибку «запрос на членство« куплено »во что-то, не являющееся структурой или объединением».

Я знаю, что, вероятно, я делаю это неправильно (мой первый проект в xcode) - любой совет будет принят с благодарностью!

Спасибо

Ответы [ 2 ]

6 голосов
/ 03 декабря 2010

Вы пробовали:

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

форму?

Я всегда подкласс NSManagedObject и точка точка записи работает для объявленных свойств.Но вы можете попробовать эту «старую» нотацию, чтобы проверить, работает ли она.

0 голосов
/ 22 июня 2013

Полагаю, вы создали пользовательский подкласс NSManagedObject с «купленным» в качестве одного из свойств. Объявите itemToUpdate как объект этого подкласса, а не NSManagedObject:

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