我有一个选择器视图,我想使用 JSON 解析来显示值。我知道网站上的一些问题已经解决了解析和pickerview,但我的json文件结构略有不同。这是 json 文件的示例。
[
{
"model":"juice",
"id" :
[
{
"version": "version01"
},
{
"version": "version02"
}
]
},
{
"model":"cream",
"id" :
[
{
"version": "cream01"
},
{
"version": "cream02"
}
]
}
]
和我的 .m 文件
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL * serverhost = [NSURL URLWithString:@"http://my.json"];
NSError *error;
NSData * Data = [NSData dataWithContentsOfURL: serverhost];
self.modelsArray= [NSJSONSerialization JSONObjectWithData:Data options:NSJSONReadingAllowFragments error:&error];
NSLog(@"%@", modelsArray);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == departments)
return [self.modelsArray count];
return [self.versionsArray count];
}
#pragma mark Picker Delegate Methods
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == departments)
return [[self.modelsArray objectAtIndex:row]objectForKey:@"model"];
return [[[self.versionsArray objectAtIndex:row]objectForKey:@"model"]objectForKey:@"version"];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component
{
if (component == departments)
{
NSString * selectedRow = [[self.modelsArray objectAtIndex: row] valueForKey:@"version"];
NSArray * array = [sybreDepts objectForKey:selectedRow];
self.
}
}
@end
Basically when I select a model ie juice or cream on the first column the second column should display its contents with key being 'versions' thus when juice is selected "version01" and "version02" should be displayed on the second column.
关于该行return [[[self.versionsArray objectAtIndex:row]objectForKey:@"model"]objectForKey:@"version"];
,我不相信它执行正确,因为我收到错误
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0xa18c450' . Any suggestions ? Thanks