BHu*_*lse 0 cocoa-touch ios swift nsurlsessiondatatask
我已经向iTunes提交了一个应用程序,Apple因为崩溃而拒绝了它.
我对崩溃报告进行了象征和分析,发现它在json调用时崩溃了.
我尝试重现它,我发现它只是在我关闭我的wlan时发生的.
这是我的方法:
var session = NSURLSession.sharedSession();
var uri = "/GetNews";
let request : NSMutableURLRequest = CreateRequest(uri, HTTPmethod: "GET");
let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil;
let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: error) as? Dictionary<String, AnyObject>;
let resp : NewsResponse = NewsResponse(jsonData: jsonResult!);
completionHandler?(resp);
});
task.resume();
Run Code Online (Sandbox Code Playgroud)
它崩溃了let resp...,因为jsonResult是零,我使用!
当然Apple会离线测试应用程序,你也应该这样做.您应该计划每次需要互联网连接失败的呼叫,并且您应该适当地处理每个错误.
适当的部分取决于您的应用程序.例如,某些应用程序(如Facebook)可让您阅读已下载的帖子,并排列您撰写的帖子,以便在您建立互联网时发送.有些应用程序在没有互联网连接的情况下根本无法工作,除了发出错误消息(例如,iTunes收音机)之外,它们没有任何意义.
如果您的应用程序是新闻阅读器,也许最好的办法是使用缓存并让他们阅读他们过去下载过的新闻.一个简单,不引人注意的消息,让他们知道他们是离线的,一旦他们重新开始就会下载新文章就足够了; 然而,崩溃在可用性和实用性方面非常糟糕.
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |