gpt4 book ai didi

ios - 如何使用括号内的字符串

转载 作者:行者123 更新时间:2023-11-28 21:49:45 25 4
gpt4 key购买 nike

从另一个答案我得到了这段代码:

NSURLSession *aSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[aSession dataTaskWithURL:[NSURL URLWithString:@"http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (((NSHTTPURLResponse *)response).statusCode == 200) {
if (data) {
NSString *contentOfURL = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", contentOfURL);
}
}
}] resume];

现在我想在括号外使用字符串“contentOfURL”,但 XCode 不允许我使用它...为什么?例如,当我想这样做时:

NSURLSession *aSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[aSession dataTaskWithURL:[NSURL URLWithString:@"http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (((NSHTTPURLResponse *)response).statusCode == 200) {
if (data) {
NSString *contentOfURL = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", contentOfURL);
}
}
}] resume];

NSLog(@"%@", contentOfURL); //than here it shows me an error...

我的问题是,如何在括号外使用 String "contentOfURL"...谢谢提问

最佳答案

你不能那样做,如果你设法解决了语法问题,它就不会起作用。

首先,语法问题。变量声明是有范围的。它们仅在直接封闭的上下文中才有意义。如果它们在复合语句 ({}) 中,则变量仅从其声明点开始定义,直到复合语句结束(结束 })。如果它们在文件范围内(在任何方法或函数之外),那么它们从声明点到文件底部都是有效的。

现在,概念问题:

你要求 NSURLSession 通过调用 -dataTaskWithURL:completionHandler: 创建一个 NSURLSessionDataTaskNSURLSessionDataTask 是一个长时间运行的任务,它是异步的。您正在传递一个“ block ”作为完成处理程序。该 block 是封装的代码和数据 block 。它是一个对象。它的副本由新的 NSURLSessionDataTask 持有,并且在数据任务完成之前不会被调用。

因此,contentOfURL 在您添加到代码片段末尾的 NSLog() 语句很久之后才具有任何值(value)。

您要求开始一项长时间运行的任务。它是异步的,这意味着您的代码无需等待它完成即可继续运行。然后您将尝试访问下一条语句中的结果。但是还没有结果。长时间运行的任务才刚刚开始,更不用说完成了。

您需要真正调整您的想法,以围绕异步代码进行思考。如果你想对异步任务的最终结果做一些事情,你需要将“做某事”代码放在完成处理程序中,或者(对于以这种方式工作的 API)一些观察者代码,它正在监视任务的通知完成。

您不能编写仅假设由一个语句启动的任务在下一个语句中完成的代码。 (第一个语句已经完成,但是任务开始那个语句还没有。)

关于ios - 如何使用括号内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774274/

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