gpt4 book ai didi

ios - NSMutableArray 属性在函数被激发后变为 null

转载 作者:行者123 更新时间:2023-12-01 17:55:26 25 4
gpt4 key购买 nike

我正在尝试从 JSON 请求中获取一个 CLLocation 数组的值,并将它们分配给一个 NSMutable 数组的属性。
这里是相关的 Controller 代码:

- (void)viewDidLoad
{
[super viewDidLoad];
//using a background thread to receive the json call so that the UI doesn't stall
dispatch_async(directionQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:openMapURL];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});

NSLog(@"%@", self.coordinates);
}

- (void)fetchedData:(NSData *)responseData
{
//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseData //turn the data from the json request into a gigantic dictionary
options:0
error:&error];

NSDictionary* route = [json objectForKey:@"route"]; //created a dictionary out of the contents of route
NSDictionary* shape = [route objectForKey:@"shape"]; //create a sub-dictionary with the contents of shape
NSArray* shapePoints = [shape objectForKey:@"shapePoints"]; //turn shapePoints object into an NSArray

//Loop to turn the array of coordinate strings into CLLocation array
NSMutableArray* locations = [[NSMutableArray alloc] init];
NSUInteger i;
for (i = 0; i < ([shapePoints count])/2 ; i = i+2)
{
[locations addObject: [[CLLocation alloc]
initWithLatitude:[[shapePoints objectAtIndex:i] floatValue]
longitude:[[shapePoints objectAtIndex:i+1] floatValue]
]];
}

//When I NSLog within the function, the array has the correct data. But in viewDidLoad
//the array is null
[self.coordinates initWithArray:locations copyItems:YES];
}

为什么这个数组在 viewDidLoad 中变成了 null?

最佳答案

您正在使用 GCD 发出异步请求以从 viewDidLoad 获取数据方法。由于它是异步的,它不会阻塞 viewDidLoad方法。一旦异步请求下载并被解析,数组就会被填充。这就是你的数组是 nil 的原因在 viewDidLoad .

如果在数据下载并填充数组之前您的 UI 看起来是空白的,您可以选择显示事件指示器。这将使应用程序用户知道某些事件正在进行。

希望有帮助!

关于ios - NSMutableArray 属性在函数被激发后变为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com