从iOS 9.0开始,NSURLSession#dataTaskWithRequest
可能会返回NSURLSessionDataTask?
,因为它始终返回NSURLSessionDataTask
。 Swift迁移只是建议只添加!
来强制解包任务。但这仍然让我想知道为什么要做出这种改变。如果返回nil
,它实际上意味着什么?在什么条件下任务无法构建?在应用程序中处理这些错误的最佳方法是什么?
let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
// Swift migrator suggests force unwrapping the optional
let task = NSURLSession.sharedSession().dataTaskWithRequest(request)!
iOS 8.3
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler
iOS 9.0
- (NSURLSessionDataTask * nullable)dataTaskWithRequest:(NSURLRequest * nonnull)request
- (NSURLSessionDataTask * nullable)dataTaskWithRequest:(NSURLRequest * nonnull)request completionHandler:(void (^ nonnull)(NSData * nullable data, NSURLResponse * nullable response, NSError * nullable error))completionHandler
答案 0 :(得分:1)
看起来这是API中的错误。截至目前,问题中链接的差异显示
- (NSURLSessionDataTask * _Nonnull)dataTaskWithRequest:(NSURLRequest * _Nonnull)request