2013-11-01 4 views
1

Еще несколько новых данных Core Data и я застрял в проблеме. У меня есть свойство int в управляемом объекте, называемом индексом. Мне нужно пройти через все управляемые объекты и определить самое высокое значение индекса. Я выбрал нисходящий в моей сортировки дескриптора, так что я могу получить доступ к объекту массива с индексом 0. Я знаю, это должно быть просто, но вот мой текущий код:Основные данные: получите самое низкое значение атрибута

+(NSInteger)getHighIndexNumber{ 
    NSManagedObjectContext *context = [[FavesDataModel sharedDataModel] mainContext]; 
    NSFetchRequest *fetchReq = [[NSFetchRequest alloc] init]; 

    NSSortDescriptor *sortByIndex = [[NSSortDescriptor alloc] initWithKey:@"index" ascending:NO]; 
    [fetchReq setSortDescriptors:[NSArray arrayWithObject:sortByIndex]]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:[Favorite entityName] inManagedObjectContext:context]; 
    [fetchReq setEntity:entity]; 

    return ??? 
} 

Любые предложения? Благодаря!

+0

При вызове ' executeFetchRequest: ошибка: 'в' контексте' с 'NSFetchRequest', который вы создали, что происходит? Какая часть этого не работает так, как вы ожидаете? –

ответ

3

Ваш код выглядит хорошо, так что просто выполнить выборки запроса:

NSError *error; 
NSArray *objects = [context executeFetchRequest:fetchReq error:&error]; 
if (objects == nil) { 
    // An error occurred, report error and return nil? 
    NSLog(...); 
    return nil; 
} else if ([objects count] == 0) { 
    // No object found, return nil? 
    return nil; 
} else { 
    // At least one object found, return the first one: 
    return objects[0]; 
} 

Обратите внимание, что, так как вам нужно только первый элемент, вы можете улучшить производительность путем установки

Смежные вопросы