Как вы получаете последний объект из Core Data? - PullRequest
0 голосов
/ 09 сентября 2010

Я пишу приложение, которое использует UIPickerView и хранит каждое изменение в средствах выбора в основных данных (название приложения - Wizard Blood в магазине iTunes).До сих пор я достиг определенного успеха в том, что мой метод -didSelectRow успешно добавляет новые объекты в базовые данные с помощью следующего кода:

// Get context, entity, managedobject from the fetchedResultsController

    [newManagedObject setValue:[NSDate date] forKey:@"timeStamp"];

    //Iterates through each component and sets the value to the appropriate key
    for (int j=0; j < [LifeCounter numberOfComponents]; j++) {
        NSString *keyName = [NSString stringWithFormat:@"lifeTotal%i",j];
        [newManagedObject setValue:[NSNumber numberWithInteger:[LifeCounter selectedRowInComponent:j]] forKey:keyName];
    }

    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Error saving entity: %@", [error localizedDescription]);
    }   

Однако в моем -viewDidLoad я не могу получить основные данныезагрузить значения из последнего объекта.Это то, что у меня есть:

lifeCounterArray = [[NSMutableArray alloc] init];

for ( int i = 200; i >= -200; i-- )
{
    NSString *myString = [NSString stringWithFormat:@"%i", i];
    [lifeCounterArray addObject:myString];
}

//Hopefully this retrieves the latest values from the core data store
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

//Iterates through each component, setting it to the stored value in core data
for (int j=0; j < [LifeCounter numberOfComponents]; j++) {
    NSString *keyName = [NSString stringWithFormat:@"lifeTotal%i",j];
    NSInteger row = [[managedObject valueForKey:keyName] integerValue] +180;
    [LifeCounter selectRow:row inComponent:j animated:NO];
}

Теперь я почти уверен, что мой метод fetchedResultsController работает, так как я вижу, как он создает объекты (я вижу их в базе данных sqlite), но, возможно, я не должендаже не использовать fetchedResultsController, так как я действительно забочусь только о последнем объекте.Я буду рад опубликовать мой метод fetchedResultsController, если потребуется, заранее спасибо за помощь.

1 Ответ

0 голосов
/ 09 сентября 2010

Если вы изменили данные с момента последнего запроса, возможно, вам придется удалить кеш fetchedResultsController?

[NSFetchedResultsController deleteCacheWithName:@"(cachename)"];

Имя кэша задается в initWithFetchRequest.

если это не сработает, попробуйте установить для fetchedResultsController значение nil после изменения базы данных, что заставит его повторить запрос.

...