Ios UIPickerView中的另一个JSON数据

Ios UIPickerView中的另一个JSON数据,ios,json,uipickerview,Ios,Json,Uipickerview,我已经看了一些其他的例子,但我仍然不明白为什么我的pickerView保持为空 JSON文件 { "artstyle": [ { "id": 1001, "name": "Plain", "prefix": "plain" }, { "id": 1002, "name": "Brushed"

我已经看了一些其他的例子,但我仍然不明白为什么我的
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
我知道我已经正确地设置了委托,并且我知道JSON数据被正确地吐出。我把NSLogs放在不同的地方进行检查。你可以从.m的部分内容中看到,我已经尝试了很多不同的方法来让它工作


我已经花了几天时间在这上面了,我的头发都快没了。此外,它似乎膨胀,所以任何提示清理它将不胜感激。谢谢

您正在以异步方式检索json数据

因此,希望您忘记调用
reloadAllComponents
,一旦调用完成

例如:

- (void)fetchedData:(NSData *)responseData {
// ........All your stuff
[pickerView reloadAllComponents] ;
}
-(void)获取数据:(NSData*)响应数据{
//解析出json数据
n错误*错误;
NSDictionary*json=[NSJSONSerialization JSONObject WithData:responseData选项:针织错误:&错误];
NSLog(@“Guide:%@”,json);
_artArray=[json objectForKey:@“artstyle”];
[重新加载所有组件];
}
-(NSString*)pickerView:(UIPickerView*)pickerView标题箭头:(NSInteger)组件行:(NSInteger)组件{
NSDictionary*dict=[\u artArray objectAtIndex:row];
NSLog(@“dict:%@”,dict);
返回[dict objectForKey:@“name”];
}

您不应该只抛出.h和.m文件。这不是一个修复我的家庭作业的网站。描述您所做的工作,只添加相关代码。此外,还不清楚什么不起作用。添加问题的屏幕截图。效果很好。虽然我不太清楚为什么。我得到了重新加载的所有组件部分。你好像用我的数组做了一个字典来获取字符串?然后字符串填充选择器?如果你不介意简短的解释,那就太好了。再次感谢。加载数组后,我们需要重新加载选择器控制器以填充数组中的内容。因为您是从文件加载内容,所以在从文件内容加载数组之前,选择器可能会尝试从数组加载内容。此时,阵列中可能没有任何数据。因此,它不会在选择器中显示任何内容。这就是为什么,每次数组加载内容后,我们都需要重新加载选择器组件。尝试在选择器委托中保留断点并运行应用程序。你可能知道它是如何工作的。
- (void)fetchedData:(NSData *)responseData {
// ........All your stuff
[pickerView reloadAllComponents] ;
}
- (void)fetchedData:(NSData *)responseData {
//parse out the json data
NSError* error;


NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

NSLog(@"Guide: %@", json);

_artArray = [json objectForKey:@"artstyle"];

[<picker> reloadAllComponents];
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
NSDictionary *dict = [_artArray objectAtIndex:row];
NSLog(@"dict: %@", dict);
return [dict objectForKey:@"name"];
}