将 Obj-C 块转换为 Swift 用于 AFNetworking 调用
Translating Obj-C blocks into Swift for AFNetworking calls
我正在尝试在 Swift 文档中使用 AFNetworking(这是一个必要的限制,否则我很想学习 AlamoFire)。作为 Swift:
的新手,我正在为在这里做什么而苦苦挣扎
- (nullable AFHTTPRequestOperation *)GET:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(nullable void (^)(AFHTTPRequestOperation * __nullable operation, NSError *error))failure;
特别是,我不清楚如何处理失败块。这是我的尝试:
manager.GET(
"random_url",
parameters: [...random parameters...],
success: { (operation: AFHTTPRequestOperation!,
responseObject: AnyObject!) in
print("JSON: " + responseObject.description)
},
failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
print("there was an error")
}
)
我的 failure
块出现错误:
Cannot convert value of type '() -> ()' to expected argument type '((AFHttpRequestOperation?, NSError) -> Void)?'
。
如果有人能告诉我上面哪里出错了,我将不胜感激。非常感谢。
看来你错过了 "in":
failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
print("there was an error")
}
我知道错误并不清楚,但我在将我们的 Swift 2 应用程序移植到 Swift 3 时遇到了类似的问题。这个问题,至少对我们来说,是关于闭包中的参数。不是强制解包可选,而是将它们指定为可选类型。换句话说,尝试:
failure: { (operation: AFHTTPRequestOperation?, error: NSError?) in
print("there was an error")
}
同样,该错误似乎并未表明问题所在,但这正是我们 运行 三个月前针对的问题。
我正在尝试在 Swift 文档中使用 AFNetworking(这是一个必要的限制,否则我很想学习 AlamoFire)。作为 Swift:
的新手,我正在为在这里做什么而苦苦挣扎- (nullable AFHTTPRequestOperation *)GET:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(nullable void (^)(AFHTTPRequestOperation * __nullable operation, NSError *error))failure;
特别是,我不清楚如何处理失败块。这是我的尝试:
manager.GET(
"random_url",
parameters: [...random parameters...],
success: { (operation: AFHTTPRequestOperation!,
responseObject: AnyObject!) in
print("JSON: " + responseObject.description)
},
failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
print("there was an error")
}
)
我的 failure
块出现错误:
Cannot convert value of type '() -> ()' to expected argument type '((AFHttpRequestOperation?, NSError) -> Void)?'
。
如果有人能告诉我上面哪里出错了,我将不胜感激。非常感谢。
看来你错过了 "in":
failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in
print("there was an error")
}
我知道错误并不清楚,但我在将我们的 Swift 2 应用程序移植到 Swift 3 时遇到了类似的问题。这个问题,至少对我们来说,是关于闭包中的参数。不是强制解包可选,而是将它们指定为可选类型。换句话说,尝试:
failure: { (operation: AFHTTPRequestOperation?, error: NSError?) in
print("there was an error")
}
同样,该错误似乎并未表明问题所在,但这正是我们 运行 三个月前针对的问题。