Из plist в UIPickerView

У меня есть plist, содержимое которого я хочу получить в uipickerview.

Я могу вывести содержимое 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

спасибо за любую помощь


person hanumanDev    schedule 13.07.2011    source источник


Ответы (2)


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

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

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

person Alex Terente    schedule 13.07.2011

Вы должны использовать делегат/источник данных сборщика

Во-первых, сделайте массив свойством, загруженным в 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];
}

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

person Alex Coplan    schedule 13.07.2011
comment
plist представляет собой массив со словарем и 4 строками в словаре для каждого элемента. Я пробовал что-то похожее на то, что вы указали выше, но продолжал получать необъявленную ошибку myArray. - person hanumanDev; 13.07.2011