Вы можете использовать NSDictionary в качестве источника данных для UIPickerView, но если у вас есть пользовательский NSObject, который уже содержит пару ключ / значение, тогда было бы проще использовать NSArray этих объектов в качестве источника данных.
Предположим, что пользовательский объект Planet со свойствами planetId (int) и planetName (NSString). Создайте NSArray, называемый планетами, с объектами в том порядке, в котором вы хотите, чтобы они появлялись в палитре (они не обязательно должны быть в порядке planetId).
В titleForRow вы должны сделать:
return ((Planet *)[planets objectAtIndex:row]).planetName;
В didSelectRow, чтобы получить выбранную планету:
Planet *selectedPlanet = (Planet *)[planets objectAtIndex:row];
//
//
С NSDictionary вам нужно будет сопоставить значения ключа с номером строки средства выбора. Один из способов сделать это - просто установить ключевые значения для номеров строк и добавить пользовательские объекты в качестве значений.
Таким образом, словарь будет создан следующим образом:
NSArray *keys = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", nil];
NSArray *values = [NSArray arrayWithObjects:mercury, venus, earth, mars, nil];
items = [[NSDictionary dictionaryWithObjects:values forKeys:keys] retain];
В titleForRow вы должны сделать:
NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *planet = (Planet *)[items objectForKey:itemKey];
return planet.planetName;
В didSelectRow вы должны сделать:
NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *selectedPlanet = (Planet *)[items objectForKey:itemKey];