Я хочу видеть, сохраняется ли объект в Базовых Данных или нет. Например, у меня есть Друзья в Базовых Данных, и я определяю их firstName. Я могу запросить базовые данные, чтобы видеть, известен ли "George". Если массив набора результатов содержит больше, чем нулевые объекты, я знаю, что George там. Но Базовые Данные загружают все это в память, и я на самом деле просто хочу знать, хранится ли George или нет.
Как я сделал бы это самый эффективный путь?
Установите запрос 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;