我从头开始学习 iOS 编程。
我希望我的应用程序从网站中提取 XML。我在想,为了符合 MVC 模式,我应该有一个模型类,它只提供一种方法来完成它(也许让它也解析 XML 并返回一个数组)。
问题是我发现的所有教程都在视图和控制器的上下文中教授 NSURLSession - 所以编辑 appdelegate 或创建视图控制器等。
我从 Apples 文档中获得了以下方法,我目前在按下按钮时将它作为 IBAction 运行(因此我可以运行它并轻松测试它)。我想让它工作,然后把它放在它自己的类中:
__block NSMutableData *webData;
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *delegateFreeSession = [NSURLSession sessionWithConfiguration:defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
[[delegateFreeSession dataTaskWithURL: [NSURL URLWithString:url] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
NSLog(@"Got response %@ with error %@.\n", response, error);
NSLog(@"DATA:\n%@\nEND DATA\n", [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]);
webData = [[NSMutableData alloc] initWithData:data];
}
]resume];
我的直接问题是:
有人可以解释完成处理程序是如何工作的以及如何data
离开那里吗?它正在工作,数据正在从网站上获取 xml 并将其记录在控制台上,但是将其复制到webData
不起作用,它会编译但不会复制。(我仍在弄清楚为什么__block
声明webData
首先允许潜入那里!)
我更大的问题是,如果每个人都认为为这个过程创建一个单独的模型类的想法是个好主意。有没有更好的设计方法?
谢谢!