Поиск наборов

Базовая Основа включает несколько интерфейсов программирования для нахождения значений (и, в случае CFDictionary, ключей) в объектах коллекции. CFВвестиGetValueIfPresent функции, описанные в Получении Значений Наборов, сообщают относительно существования значений в словарях, наборах и сумках. Можно также использовать функции с, «Содержит» на их имена, чтобы определить, содержит ли набор значение или ключ. Перечисление 1 иллюстрирует как CFDictionaryContainsKey функция могла бы использоваться.

Перечисление 1  , Ищущее CFDictionary, возражает для ключа

if (CFDictionaryContainsKey(mappingTable, (const void*)lowerCharsetName)) {
    result = (CFStringEncoding)CFDictionaryGetValue(mappingTable, (const void*)lowerCharsetName);
}

Для объектов CFArray, CFArrayBSearchValues функционируйте предлагает более сложный параметр поиска. Эта функция ищет указанное значение в сортированном массиве с помощью алгоритма двоичного поиска. Если значение не существует в наборе, функция говорит Вам, куда это должно пойти; CFArrayBSearchValues функция таким образом помогает Вам сохранить сортированный непостоянный массив сортированным. Перечисление 2 показывает, как могла бы быть вызвана эта функция.

Перечисление 2  , Ищущее значение в объекте CFArray

CFIndex position = CFArrayBSearchValues(aMutArray, CFRangeMake(0,CFArrayGetCount(anArray)), (const void *)CFSTR("String Three"), CFStringCompare, 0);

Четвертый параметр CFArrayBSearchValues функция должна быть указателем на функцию, соответствующую CFComparatorFunction ввести. Эта функция компаратора, как предполагается, знает, как сравнить значения в массиве. В данном примере CFStringCompare используется, потому что это соответствует CFComparatorFunction и это знает, как сравнить значения CFString. Существуют другие предопределенные Базовые функции компаратора Основы, которые можно использовать, такой как CFNumberCompare и CFDateCompare.

По возврату вышеупомянутого вызова, функция CFIndex результат может указать одно из следующего:

Можно использовать CFArrayContainsValue определить, является ли результат первым из перечисленных альтернатив.

Тип CFTree определяет другую группу функций для определения местоположения содержавших значений (т.е. поддеревья). Посмотрите Создание и Копирование Наборов для получения дополнительной информации.