使用Objective C,我习惯使用此方法从AFHTTPSessionManager封装GET方法并从API JSON获取信息:
- (void)getShowInfo:(void(^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void(^)(NSURLSessionDataTask *task, NSError *error))failure
{
NSString* path = kInfoBaseURLString;
[self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
if (success) {
success(task, responseObject);
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
if (failure) {
failure(task, error);
}
}];
}
如何在Swift中进行比较,比较成功和失败?我正在尝试这样的事情:
func getShowInfo(success: (task: NSURLSessionDataTask, responseObject: AnyObject) -> Void,
failure: (task: NSURLSessionDataTask, error: NSError) -> Void) {
var path : String = kInfoBaseURLString
GET(path, parameters: nil, success: {(task: NSURLSessionDataTask!, responseObject: AnyObject!) -> Void in
if (success != nil) {
success(task, responseObject)
}
success = nil
}, failure: {(task: NSURLSessionDataTask!, error: NSError!) in
if (failure != nil) {
failure(task, error)
}
})
}
“if(success!= nil)”和“if(failure!= nil)”中的所有内容都无效。
如何将其转换为swift?
编辑完成错误:
if (success != nil) {
错误:'(任务:NSURLSessionDataTask,responseObject:AnyObject) - > Void'不能转换为'String'
if (failure != nil) {
错误:'(任务:NSURLSessionDataTask,错误:NSError) - > Void'不能转换为'String'
success(task, responseObject)
错误:缺少参数标签的任务:responseObject:'in call
failure(task, error)
错误:缺少参数标签的任务:responseObject:'in call
答案 0 :(得分:1)
使用Swift中定义的方法,您无法通过nil成功或失败关闭,因此无需进行检查。如果可以传递nil,则需要在方法定义中将成功或失败参数标记为选项。
我建议使用Alamofire代替AFNetworking进行Swift项目,除非您已经将自己束缚在AFNetworking上。