Если вам нужна только дата:
SELECT MIN(date) as EarliestDate
FROM YourTable
WHERE id = 2
Если вам нужна вся информация:
SELECT TOP 1 id, name, score, date
FROM YourTable
WHERE id = 2
ORDER BY Date
Предотвращайте петли, когда можете. Циклы часто приводят к курсорам, и курсоры почти никогда не нужны и очень часто неэффективны.
Метод + initialize
вызывается автоматически при первом использовании класса, до использования каких-либо методов класса или создания экземпляров. Вы никогда не должны вызывать + инициализировать
самостоятельно.
Я также хотел рассказать о лакомом кусочке, который, как я узнал, может вас укусить в будущем: + initialize
наследуется подклассами и является также вызывается для каждого подкласса, который не реализует собственную + инициализацию
. Это может быть особенно проблематично, если вы наивно реализуете одиночную инициализацию в + initialize
. Решение - проверить тип переменной класса следующим образом:
+ (void) initialize {
if (self == [MyParentClass class]) {
// Once-only initializion
}
// Initialization for this class and any subclasses
}
Все классы, производные от NSObject, имеют методы + class
и -class
, которые возвращают объект Class
. Поскольку для каждого класса существует только один объект Class, мы действительно хотим проверить равенство с помощью оператора ==
. Вы можете использовать это для фильтрации того, что должно произойти только один раз, а не один раз для каждого отдельного класса в иерархии (которая может еще не существовать) ниже данного класса.
По второстепенной теме стоит узнать о следующих связанных методах , если вы еще этого не сделали:
aClass
) aClass
и дети) Существует метод класса + инициализация , который будет вызываться перед использованием класса.