我正在尝试找到如何在 swift3 中编写这些块,任何帮助将不胜感激。
我在 swift3 项目中使用 obj-c PocketSDK。 https://github.com/Pocket/Pocket-ObjC-SDK
我可以通过适当的桥头设置很好地使用这个 SDK,但仍然不确定如何编写块部分。
对象-c
[[PocketAPI sharedAPI] callAPIMethod:@"get"
withHTTPMethod:PocketAPIHTTPMethodGET
arguments:arguments
handler:^(PocketAPI *api, NSString *apiMethod, NSDictionary *response, NSError *error) {
}];
这是 PocketSDK 中的类型 def。
-(void)callAPIMethod:(NSString *)apiMethod withHTTPMethod:(PocketAPIHTTPMethod)HTTPMethod arguments:(NSDictionary *)arguments delegate:(id<PocketAPIDelegate>)delegate;
typedef void(^PocketAPIResponseHandler)(PocketAPI *api, NSString*apiMethod, NSDictionary *response, NSError *error);
迅速?(这显示错误。)
let arguments: [String: Any] = [
"state": "unread",
"count": 20
]
PocketAPI.shared().callMethod("get", with: PocketAPIHTTPMethodGET, arguments: arguments) {
(api: PocketAPI,
apiMethod: String,
esponse: [AnyHashable:Any],
error: Error) in
}
@更新
我可以避免没有类型 def 的编译错误,但如果我输入参数,仍然会得到无法识别的选择器。如果我在参数中设置 nil,但我不明白。字典有什么问题吗?
var arguments = [String : Any]()
arguments["count"] = 20
arguments["state"] = "unread"
PocketAPI.shared().callMethod("get", with: PocketAPIHTTPMethodGET, arguments: arguments) {
(api,
apiMethod,
response,
error) in
}
错误。
-[_SwiftTypePreservingNSNumber 长度]:无法识别的选择器发送到实例 0x174624540 2017-08-15 14:05:51.345611+0900 Voicepaper2[1062:286998] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[_SwiftTypePreservingNSNumber 长度]:无法识别的选择器发送到实例 0x174624540' *第一次抛出调用堆栈: