Мне интересно, как я могу программно обновить объект Core Data. Объект является NSSet, хотя. Таким образом, я могу суммировать это со схемой ниже:
Property
---------
name
price
typology
Property_has_typology
---------------------
typology_id
property
Между Property и Property_has_typology существует отношение один ко многим. Как одна собственность может иметь несколько типологий (или категории), такие как Bed & Breakfast, Villa, Hotel, Mansion, Country House.
Поэтому я позволяю пользователю выбрать несколько строк в моем TableView, и когда он нажимает save , я хочу сохранить эти изменения. Итак, я делаю:
NSMutableArray *storeItems = [[NSMutableArray alloc] init];
//Get selected items
for (int i = 0; i < [items count]; i++) {
Properties_has_typology *typo = [NSEntityDescription insertNewObjectForEntityForName:@"Properties_has_typology"
inManagedObjectContext: [PropertyProvider sharedPropertyProvider].context];
typo.typology_id = [NSNumber numberWithInt: (int)[items objectAtIndex:i]];
typo.property = property;
[storeItems addObject: typo];
}
//Store the items for the Property and save it
if ([storeItems count] > 0) {
NSLog(@"Going to save...");
NSSet *storeSet = [[NSSet alloc] initWithArray:storeItems];
property.typology = storeSet;
[property save];
[storeSet release];
}
Это вроде работает, но проблема в том, что он не обновляет существующие значения. Это просто отменяет это. Поэтому, если я сохраню два одинаковых элемента дважды (просто в качестве примера), я получу в своей базе данных следующее:
PK TYPOLOGY
------------
1 |
2 |
3 | 4
4 | 6
Так что, да, они хранятся, но это также создает пустые строки (очищает их вместо удаления / обновления).
Любая помощь будет принята с благодарностью. Спасибо!