Самый быстрый способ проверить, существует ли объект в Базовых Данных или нет?

Я хочу видеть, сохраняется ли объект в Базовых Данных или нет. Например, у меня есть Друзья в Базовых Данных, и я определяю их firstName. Я могу запросить базовые данные, чтобы видеть, известен ли "George". Если массив набора результатов содержит больше, чем нулевые объекты, я знаю, что George там. Но Базовые Данные загружают все это в память, и я на самом деле просто хочу знать, хранится ли George или нет.

Как я сделал бы это самый эффективный путь?

53
задан ssc 12 January 2015 в 09:08
поделиться

1 ответ

Установите запрос Core Data и, вместо того, чтобы на самом деле выдавать запрос, сделайте следующее:

NSError *error = nil;
NSUInteger count = [managedObjectContext countForFetchRequest:request
                                                        error:&error];
if (!error) {
    return count;
} else {
  return 0;
}

На практике метод countForFetchRequest:error: возвращает количество объектов, которые вернул бы данный запрос на выборку, если бы он был передан в executeFetchRequest:error:.


Edit: (by Regexident)

Как правильно заметил Josh Caswell, правильный способ обработки ошибок либо такой:

if (count == NSNotFound) {
    NSLog(@"Error: %@", error);
    return 0;
}
return count;

либо такой (без логирования ошибок):

return (count != NSNotFound) ? count : 0;
96
ответ дан 7 November 2019 в 08:26
поделиться