UIPickerView с JSON - PullRequest
       3

UIPickerView с JSON

1 голос
/ 02 апреля 2012

Мне нужна помощь в извлечении объекта JSON и анализе массива в моем UIPickerView с двумя столбцами.Один столбец - это данные, извлекаемые из JSON, другой - жестко запрограммирован.Есть ли примеры кодов для анализа JSON в столбце UIPickerView?

1 Ответ

2 голосов
/ 02 апреля 2012

Я дал вам некоторый код, чтобы начать, но, пожалуйста, имейте в виду, что: Это не оптимизированный код (например, вызов, который вы делаете для получения ваших данных, выполняется в главном потоке. В случае, если вам нужно получить большие объемы данных, вы должны выполнять асинхронные вызовы). Важно понять, как реализован UIPickerView делегат & источник данных . Я надеюсь, что это выведет вас на правильный путь ...

// Get your JSON Data
NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.mydomain.com/myjson.json"]];

// Convert your JSON object to an 'NS' object
NSError *error;
id myJsonObj = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];

// Extract any data from your JSON object

NSArray *myFirstArray = ...; // Your fixed array
NSArray *mySecondArray = ...; // An array with data from your JSON


// In your UIPIckerView datasource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    switch(component)
    {
        case 0:
            // First component
            return [myFirstArray count];
            break;
        case 1:
            // Second component
            return [mySecondArray count];
            break;
        default:
            return 0;
            break;
    }

    return 0;
}


// In your UIPIckerView delegate
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    switch(component)
    {
        case 0:
            // First component
            return [myFirstArray objectAtIndex:row]; // We assume that you got NSString objects in the array
            break;
        case 1:
            // Second component
            return [mySecondArray objectAtIndex:row]; // We assume that you got NSString objects in the array
            break;
        default:
            return 0;
            break;
    }

    return @"";
}
...