Первый тоже правильный, но с помощью этого метода вы можете извлекать записи и подсчитывать, используя тот же запрос, без головной боли написать другой.Просто добавьте count (*) в качестве count к вашему запросу.
Вы всегда можете просто запустить правильный оператор SQL.Я делаю что-то вроде:
FMResultSet *rs = [database executeQuery:@"select count(*) as count from words"];
[rs next];
wordsThatExist = [rs intForColumn:@"count"];
Настройка SQL-запроса может быть быстрее и дешевле, чем итерация. Я считаю, что подсчет дешево.