От plist до UIPickerView - PullRequest
       19

От plist до UIPickerView

0 голосов
/ 13 июля 2011

У меня есть список, который я хочу получить в обзоре 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 ]

1 голос
/ 13 июля 2011

Необходимо использовать делегат / источник данных средства выбора.

Сначала сделайте массив свойством, загруженным в viewDidLoad, то есть:

-(void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:
                                        @"loa" ofType:@"plist"];
self.myArray = [[NSArray alloc] initWithContentsOfFile:path];
}

THEN

Создайте свой класс для делегата / источника данных и подключите его в 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];
}

Какова структура вашего списка?- Это просто плоский массив, или массив, назначенный для одноклавишного диктанта, или диктат с парами ключ / объект ...

1 голос
/ 13 июля 2011

Что вы должны сделать, это:

NSMutableDictionary *myDataDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSLog(@"MyDict:%@",[myDataDictionary description]);

Ваш файл plist является NSDictionary;

...