От plist до UIPickerView
У меня есть список, который я хочу получить в обзоре uipicker.
Я могу вывести содержимое plist в консоли, используя:
// Path to the plist (in the application bundle)
NSString *path = [[NSBundle mainBundle] pathForResource:
@"loa" ofType:@"plist"];
// Build the array from the plist
NSMutableArray *array2 = [[NSMutableArray alloc] initWithContentsOfFile:path];
// Show the string values
for (NSString *str in array2)
NSLog(@"--%@", str);
что мне нужно выяснить, это как получить этот контент в UIPickerView.
Я попробовал следующее:
arrayPicker = [[NSMutableArray alloc] initWithArray:array2];
, но получите ошибку: exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary isEqualToString:]: unrecognized selector sent to instance
спасибо за любую помощь
2 ответа
Что вы должны сделать, это:
NSMutableDictionary *myDataDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSLog(@"MyDict:%@",[myDataDictionary description]);
Ваш файл plist является NSDictionary;
Вы должны использовать сборщик делегатов / источник данных
Во-первых, сделайте массив свойством, загруженным в viewDidLoad, то есть:
-(void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:
@"loa" ofType:@"plist"];
self.myArray = [[NSArray alloc] initWithContentsOfFile:path];
}
ЗАТЕМ
Создайте свой класс для делегата / источника данных и подключите его в IB.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [myArray count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [myArray objectAtIndex:row];
}
Какова структура вашего списка? - Это просто плоский массив, или массив, назначенный на одноклавишный диктант, или диктат с парами ключ / объект...