带有 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对象列表的文件