(Примечание: это расширение предыдущего вопроса .)
У меня возникли трудности с реализацией SearchBar для довольно сложного просмотра таблицы. TableView имеет несколько разделов, две строки текста и изображение. Все данные загружаются из списка, а затем помещаются в разделы по начальной букве значения ключа «Имя». NSLog возвращает следующее для моего основного словаря "sectionedDictionaryByFirstLetter":
sectionedDictionaryByFirstLetter:{
B = (
{
Name = "B...A Name Starting with B";
Image = "ImageName1.png";
Text = "Some Text";
}
);
C = (
{
Name = "C...A Name Starting with C";
Image = "ImageName2.png";
Text = "Some Text";
}
);
N = (
{
Name = "N1...A Name Starting with N";
Image = "ImageName3.png";
Text = "Some Text";
},
{
Name = "N2...A Name Starting with N";
Image = "ImageName4.png";
Text = "Some Text";
},
{
Name = "N3...A Name Starting with N";
Image = "ImageName5.png";
Text = "Some Text";
}
);
}
Я хочу отфильтровать под словари по значению ключа «Имя». Кто-нибудь может порекомендовать, как это сделать, или какие-то ресурсы для обучения, как? Я следовал примеру в «Начале разработки iPhone 3», но не смог перевести его в мою ситуацию.
Поэтому, если пользователь вводит «с N» в строке поиска, я бы хотел, чтобы новый словарь отображался как:
filteredSectionedDictionaryByFirstLetter:{
N = (
{
Name = "N1...A Name Starting with N";
Image = "ImageName3.png";
Text = "Some Text";
},
{
Name = "N2...A Name Starting with N";
Image = "ImageName4.png";
Text = "Some Text";
},
{
Name = "N3...A Name Starting with N";
Image = "ImageName5.png";
Text = "Some Text";
}
);
}
Просто чтобы уточнить, у меня установлена панель поиска в представлении, у меня просто проблемы с ее функционированием. В настоящее время я играю с пользовательским методом - (void) handleSearchForTerm: (NSString *) searchTerm из примера в книге.
Спасибо за помощь!
Вот общая структура данных.
sectionedDictionaryByFirstLetter
Key Value
B Array of Dictionaries with Names beginning with B
....
C Array of Dictionaries with Names beginning with C
...
N Array of Dictionaries with Names beginning with N
Item 1 Dictionary 1
Item 2 Dictionary 2
Item 3 Dictionary 3
Dictionary 3
{
Name = "N3...A Name Starting with N";
Image = "ImageName5.png";
Text = "Some Text";
}
Надеюсь, это поможет. Я все еще отчаянно ищу ответ на эту проблему.
По сути, есть первичный словарь, ключи которого - первые буквы элементов, которые он содержит. В каждой первой букве есть массив словарей, которые имеют значение для своего ключа «Имя», начинающегося с этой буквы.