Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从viewDidLoad内部访问数组会返回超出空数组边界的索引1_Ios_Objective C - Fatal编程技术网

Ios 从viewDidLoad内部访问数组会返回超出空数组边界的索引1

Ios 从viewDidLoad内部访问数组会返回超出空数组边界的索引1,ios,objective-c,Ios,Objective C,我有一个存储JSON值的NSMutableArray。我从数组中选择一个特定的索引,将该值显示在按钮上 这很好,执行这项工作的代码是在函数内部准备的 例如,当我调用该函数时,它在按钮内部工作正常,并返回我想要的结果。但是如果我在viewDidLoad内调用,它会返回: **由于未捕获异常“NSRangeException”而终止应用程序,原因:“***-[\uu NSArrayM objectAtIndex:]:索引1超出空数组的界限” 这是向按钮显示数据的代码,“我的按钮”是十个,“我的数组”

我有一个存储JSON值的
NSMutableArray
。我从数组中选择一个特定的索引,将该值显示在按钮上

这很好,执行这项工作的代码是在函数内部准备的

例如,当我调用该函数时,它在按钮内部工作正常,并返回我想要的结果。但是如果我在
viewDidLoad
内调用,它会返回:

**由于未捕获异常“NSRangeException”而终止应用程序,原因:“***-[\uu NSArrayM objectAtIndex:]:索引1超出空数组的界限”

这是向按钮显示数据的代码,“我的按钮”是十个,“我的数组”有十个元素:

NSString *onemb =[[mobile firstObject]objectForKey:@"package"];
NSString *onedolar =[[mobile firstObject]objectForKey:@"rate"];
nus_dolar.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
nus_dolar.titleLabel.textAlignment = NSTextAlignmentCenter;
nus_dolar.titleLabel.numberOfLines = 2;
nus_dolar.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:20];
[nus_dolar setTitle:[NSString stringWithFormat:@"%@\n%@", onedolar , onemb ] forState: UIControlStateNormal];
这是我的调用函数:

[self loadingHomePageData];

调用API从服务器获取json的函数是异步的,因此获取响应所需的时间很短,并且不会在
viewDidLoad
生命周期中获取响应

您可以使用
@escaping completionHandler
(在swift中-您应该将其转换为objective-c)来模拟获取响应的同步方法。然后您可以在
viewDidLoad
中使用它


请参见

如果从服务器获取JSON,可以使用

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURL *url = [NSURL URLWithString:@"anUrl"];

[session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    // your JSON parsing code here
}];

在哪里填充数组?我填充数组:如下-(void)proxydfinishloadingdata:(id)data in method:(NSString*)method{if([method isEqualToString:@“getmobiledata”]){NSMutableDictionary*defaultDict=[[NSMutableDictionary alloc]init];[defaultDict addEntriesFromDictionary:[NSJSONSerialization JSONObjectWithData:[data dataUsingEncoding:NSUTF8StringEncoding]选项:0错误:无]];NSLog(@“%@”,defaultDict);[mobile addObjectsFromArray:[[defaultDict objectForKey:@“data”]objectForKey:@“data”]];}arash先生请指导我由于您试图访问索引1上不存在的值而发生错误。请检查数组是否为空&索引是否为