Вы почти поняли:
NSDictionary * lists = ...;
Это ваш оригинальный словарь
NSArray *states = [lists objectForKey:@"states"];
Это для получения массива состояний из вашего словаря. Предположительно это фактические объекты "State" (т. Е. Вы создали класс с именем State
)
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"countryname == %@", selectedCountry];
Это создает предикат, который сравнивает результаты -[State countryname]
со значением, на которое ссылается переменная selectedCountry
. В качестве альтернативы, если массив states
содержит словари, результаты сравнения -[NSDictionary objectForKey:@"countryname"]
будут сравниваться со значением, на которое ссылается selectedCountry
.
states = [states filteredArrayUsingPredicate:predicate];
Это извлечет все состояния из массива, где [[aState countryname] isEqual:selectedCountry]
states = [states valueForKeyPath:@"name"];
Это создаст новый массив, содержащий имя каждого состояния. Этот новый массив будет в том же порядке, что и ваш отфильтрованный массив states
.