Привет всем! Первый вопрос здесь, поэтому, пожалуйста, будьте нежны :). Я немного знаком с Objective-C, но у меня есть некоторые проблемы с подробностями. Короче говоря, я хочу знать, как я могу выполнить бинарный поиск по NSMutableArray из NSDictionaries, и в этом поиске искать частичный синтаксис строки. У меня есть NSMutableArray NSDictionaries, где массив представляет собой список контактов, и каждый NSDictionary является одним контактом (с четырьмя частями информации). Мне удалось отсортировать массив, используя
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:type ascending:YES];
[addressBook sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
где ключ - это пользовательский ключ в словаре. Часть функциональности программы заключается в выполнении поиска префиксов для каждого фрагмента данных в отдельных контактах.
Итак, пока я нашел -indexOfObject: inSortedRange: options: usingComparator: (и, в частности, этот пост , я не могу понять, как настроить поиск для обоих префиксов поиска строка и как реализовать синтаксис блока для самого поиска.
Я попробовал это - но я просто получаю очень полезную ошибку "Ожидаемое выражение", так как я предполагаю, что не могу заменить indexOfObjectPassingTest на indexOfObject.
unsigned index2 = [addressBook
indexOfObjectPassingTest:<#^BOOL(id obj, NSUInteger idx, BOOL *stop)predicate#>:^(id obj, NSUInteger idx, BOOL *stop)
inSortedRange:NSMakeRange(0, [addressBook count])
options:NSBinarySearchingFirstEqual
usingComparator:(NSComparator^(id obj1, id obj2)];
Буду признателен за любую помощь в получении -indexOfObject: inSortedRange: options: usingComparator: работать, или если у кого-то есть другое предложение для бинарного поиска в NSArray из NSDictionaries, я все уши.
(И да, хотя это для назначения алгоритмов, оно не зависит от языка программирования. Я пытаюсь максимизировать скорость, поэтому я думал о массиве каждый раз, когда вы его просматриваете. Я также думал о создании копий массива, отсортированного по каждому ключу словаря, но поскольку мы имеем дело с большими CSV-файлами, это показалось немного чрезмерным. Поэтому любые другие специфичные для Mac асимптотические подсказки будут НАМНОГО оценены, так как это часто бывает трудно найти в документации Apple.)