Ответ 1
Вы просто запрашиваете существующий объект с помощью NSFetchRequest
, изменяете все поля, которые необходимо обновить (для этого требуется простой набор параметров myObject.propertyName), а затем выполните действие сохранить на контекст данных.
EDIT, чтобы добавить пример кода. Я согласен с MCannon, Core Data, безусловно, стоит прочитать.
Этот код предполагает, что вы создали проект с шаблоном, который включает в себя материалы Core Data, так что ваш делегат приложения имеет контекст управляемого объекта и т.д. Обратите внимание, что здесь нет проверки ошибок, это всего лишь базовый код.
Извлечение объекта
// Retrieve the context
if (managedObjectContext == nil) {
managedObjectContext = [(YourAppNameAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
// Retrieve the entity from the local store -- much like a table in a database
NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntityName" inManagedObjectContext:managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
// Set the predicate -- much like a WHERE statement in a SQL database
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"YourIdentifyingObjectProperty == %@", yourIdentifyingQualifier];
[request setPredicate:predicate];
// Set the sorting -- mandatory, even if you're fetching a single record/object
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"yourIdentifyingQualifier" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release]; sortDescriptors = nil;
[sortDescriptor release]; sortDescriptor = nil;
// Request the data -- NOTE, this assumes only one match, that
// yourIdentifyingQualifier is unique. It just grabs the first object in the array.
YourEntityName *thisYourEntityName = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0];
[request release]; request = nil;
Обновить объект
thisYourEntityName.ExampleNSStringAttributeName = @"The new value";
thisYourEntityName.ExampleNSDateAttributeName = [NSDate date];
Сохранить изменения
NSError *error;
[self.managedObjectContext save:&error];
Теперь ваш объект/строка обновляется.