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