在这个网站上有一个类似的问题,但由于我不能以问题的形式在这个问题上添加另一个评论,我选择在这里写我的,原谅我。在这里,
我在本地服务器上有一个JSON文件,并试图访问我的UIPickerView上的值。问题是我得到一个“问号,即”?“”而不是JSON文件上的字符串。这是什么问题,我该如何解决这个问题?我还是个初学者,所以请轻松一点。
这是代码,
#import "ViewController.h"
#import "JSON.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize picker;
@synthesize terrainJsonArray;
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *terrainString = [NSString stringWithFormat:@"http://terrainracing.com/ios/events_json.php"];
NSURL *terrainUrl = [NSURL URLWithString:terrainString];
NSData *terrainData = [NSData dataWithContentsOfURL:terrainUrl];
NSError *error;
self.terrainJsonArray = [NSJSONSerialization JSONObjectWithData:terrainData options:kNilOptions error:&error];
NSLog(@"%@", terrainJsonArray);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
return self.terrainJsonArray.count;
}
#pragma mark Picker Delegate Methods
- (UIView *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
{
return [self.terrainJsonArray objectAtIndex:row];
}
@end
答案 0 :(得分:2)
首先修复你的委托方法 - - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
返回NSString而不是UIView,你需要显然返回一个字符串让它工作
我可以在您的回复项目中看到
{"event_name":"Phoenix","date":"Oct 27","event_id":"14"}
因此您需要获取要显示的“子项目”字符串
例如
return [[self.terrainJsonArray objectAtIndex:row] valueForKey:@"event_name"];