Я только что прочитал несколько руководств и решил добавить хранилище Core Data в свой проект. Затем я реализую методы «create» и «read». Он работает нормально. Но тогда у меня возникла проблема с методом «обновления».Обновление записи основных данных в приложении iOS
- (void)updateForecastPlace:(NSString *)placeString
{
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:ENTITY_NAME inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
WFForecast *forecastToUpdate;
for (WFForecast *forecast in fetchedObjects)
{
if ([[forecastToUpdate timestamp] compare:[forecast timestamp]] == NSOrderedAscending)
{
forecastToUpdate = forecast;
}
}
[forecastToUpdate setPlace:placeString];
error = nil;
if ([context save:&error])
{
NSLog(@"Forecast information was updated!");
}
else
{
NSLog(@"The forecast information was not updated: %@", [error userInfo]);
}
}
Я извлекаю объекты из контекста. (Все нормально)
Затем выберите один для обновления.
установки новое значение его свойству ([forecastToUpdate setPlace:placeString];
)
Затем сохраните контекст. ([context save:&error]
))
Кажется, что он работает (это не вызывает ошибок и посылает успешный массаж в консольный журнал). Но когда я читаю этот объект, он не обновляется. Я прочитал много материала по этой проблеме, но не понял, как это исправить. Любые предложения, пожалуйста?
UPDATE: проверить значение моего обновленного свойства объекта place
[forecastToUpdate setPlace:placeString];
NSLog(@"---arg value %@", placeString);
NSLog(@"---updated value %@", [forecastToUpdate place]);
и получил выход как:
---arg value Sydney, Australia
---updated value (null)
Любая идея, что вызвало такую ошибку?
ваш код кажется нормально, убедитесь, что вы читаете правильный объект также проверьте, правильно ли вы указали значение «forecastToUpdate.place» перед сохранением контекста. – Idali
Idali, спасибо. Ваш комментарий немного подтолкнул меня в моем решении (проверьте обновление) – sonysun