带有 JSON 的 UIPickerView

Posted

技术标签:

【中文标题】带有 JSON 的 UIPickerView【英文标题】:UIPickerView with JSON 【发布时间】:2012-04-02 06:10:22 【问题描述】:

我需要帮助来检索 JSON 对象并将数组解析到具有 2 列的 UIPickerView 中。一列是从 JSON 检索的数据,另一列是硬编码的。 有没有将 JSON 解析到 UIPickerView 列的示例代码?

【问题讨论】:

【参考方案1】:

我为您准备了一些代码来帮助您入门,但请记住: 它不是优化的代码(例如,您获取数据的调用是在主线程中执行的。如果您需要获取大量数据,则必须进行异步调用)。 了解 UIPickerView delegate 和 datasource 是如何实现的至关重要。 我希望这会让你走上正轨......

// 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 @"";

【讨论】:

以上是关于带有 JSON 的 UIPickerView的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSON 正文的 GET 方法和带有 RestTemplate 的承载授权

Python使用json加载解析带有两个json对象列表的文件

如何将带有 JSON 字符串的 Pandas DataFrame 转换为有效的 JSON?

带有 JSON 数组的 jQuery 'each' 循环

从 JSON 加载带有标题的表

如何使用 javascript 解析带有数组的外部 JSON 文件