我正在尝试使用解析为 NSArray 的 JSON 数据填充 UIPickerView。
控制台显示 JSON 正在正确解析,但 UIPickerView 仍为空。
这是我的代码:
- (NSInteger)numberOfComponentsInPickerViewUIPickerView *)pickerView
{
return 1;
}
-(NSInteger)pickerViewUIPickerView *)pickerView numberOfRowsInComponentNSInteger)component
{
//set number of rows
return self.terrainJsonArray.count;
}
-(NSString *)pickerViewUIPickerView *)pickerView titleForRowNSInteger)row forComponentNSInteger)component
{
//set item per row
return [self.terrainJsonArray objectAtIndex:row];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Parse JSON
NSString *terrainString = [NSString stringWithFormat"http://terrainracing.com/ios/events_json.php"];
NSURL *terrainUrl = [NSURL URLWithString:terrainString];
NSData *terrainData = [NSData dataWithContentsOfURL:terrainUrl];
NSError *error;
NSArray *terrainJsonArray = [NSJSONSerialization JSONObjectWithData:terrainData options:kNilOptions error:&error];
NSLog(@"%@", terrainJsonArray);
}
选择器 View 委托(delegate)方法正在查看类 instance 变量 self.terrainJsonArray
(实际上它是实例变量的属性 getter) .
在 viewDidLoad
中,您正在声明和记录一个名为 terrainJsonArray
的 local 变量。此局部变量与实例变量无关。
您必须在 viewDidLoad
中收到编译器警告,例如“'terrainJsonArray' 的本地声明隐藏实例变量”。
改变这一行:
NSArray *terrainJsonArray = [NSJSONSerialization JSONObjectWithData:terrainData options:kNilOptions error:&error];
到:
self.terrainJsonArray = [NSJSONSerialization JSONObjectWithData:terrainData options:kNilOptions error:&error];
关于ios - UIPickerView 为空,数据源为 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9831852/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |