【发布时间】:2014-05-30 07:26:44
【问题描述】:
我查看了一些其他示例,但我似乎仍然无法弄清楚为什么我的pickerView 保持空白。
JSON 文件
{
"artstyle": [
{
"id": 1001,
"name": "Plain",
"prefix": "plain"
},
{
"id": 1002,
"name": "Brushed",
"prefix": "brushed"
},
{
"id": 1003,
"name": "Swirly",
"prefix": "swirly"
}
]}
.h
@interface FlipScrollViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>
@property NSArray *artArray;
@end
.m
@interface FlipScrollViewController ()
@end
@implementation FlipScrollViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//Getting the file path from the local bundle.
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"art" ofType:@"json"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfFile:filePath];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});
}
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
//self.artArray = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
//NSLog(@"get: %@", _artArray);
//NSArray* shapeguide = [json objectForKey:(@"artstyle")];
// this spits out the whole JSON file contents
//NSLog(@"Guide: %@", shapeguide);
//NSDictionary *art = [shapeguide objectAtIndex:0];
//NSLog(@"Guide: %@", guide);
// Displays the "name" value in the Label text
//name.text = [NSString stringWithFormat:@"%@",[guide objectForKey:@"name"]];
//self.artArray = [art objectForKey:@"name"];
_artArray = [json objectForKey:(@"name")];
//NSLog(@"Guide: %@", _artArray);
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [_artArray count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [_artArray objectAtIndex:row];
}
/*
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
//to do
return [self.artArray count];
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
return [[self.artArray objectAtIndex:row] valueForKey:@"name"];
}
*/
@end
我知道我已经正确设置了委托,并且我知道 JSON 数据被正确吐出。我已经将 NSLogs 放在不同的地方进行检查。您可以从 .m 的部分内容中看到,我已经尝试了很多不同的方法来让这个东西正常工作。
我已经在这上面花了几天时间,我的头发都快用完了。另外,它看起来很臃肿,所以任何清理它的技巧都会受到赞赏。谢谢
【问题讨论】:
-
你不应该只扔掉你的 .h 和 .m 文件。这不是一个修复我的家庭作业的网站。描述你做了什么,只添加相关代码。此外,目前还不清楚什么不起作用。添加问题的屏幕截图。
标签: ios json uipickerview