访问 JSON 文件以填充 UIPickerView

Posted

技术标签:

【中文标题】访问 JSON 文件以填充 UIPickerView【英文标题】:Access JSON file to populate UIPickerView 【发布时间】:2012-12-18 12:09:43 【问题描述】:

这个网站上有一个与此类似的问题,但由于我无法以问题的形式对该问题添加其他评论,所以我选择在这里写我的,请原谅我。来吧,

我在本地服务器上有一个 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

【问题讨论】:

NSLog(@"%@", terrainJsonArray);的输出是什么 应用程序访问 json,我在输出窗口看到了 json 数组,仅此而已。 你能发布 NSLog 的控制台输出吗? 【参考方案1】:

首先修复您的委托方法 - - (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"];

【讨论】:

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

swift:从本地 json 文件填充的 uitableview 在滚动时严重卡顿

自动导出访问表数据以填充模板 Excel 工作表

将 JSON 文件数据填充到 Array 中,然后将 Array 输入到 mmenu 插件中

Django:上传文件并读取其内容以填充模型?

获取 JSON 数据以从数组中填充 TableView

尝试使用 json 文件和 Getjson 用 img src 填充 <li>