我想找到如何在swift3中编写这个块,任何帮助将不胜感激。如何以swift3正确的方式编写块(闭包)?
我在swift3项目中使用obj-c PocketSDK。 https://github.com/Pocket/Pocket-ObjC-SDK
我可以使用这个SDK正确的桥头设置,但仍然不知道如何我可以写块部分。
OBJ-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);
swift? (这表明错误。)
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
}
@Updated
我能避免无类型定义编译错误,但是如果我把参数仍然得到了无法识别的选择。如果我在参数中设置零,我不明白。字典有什么问题吗?
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年8月15日14:05:51.345611 + 0900 Voicepaper2 [1062:286998] *终止应用程序由于未捕获的异常 'NSInvalidArgumentException' 的,原因: ' - [_ SwiftTypePreservingNSNumber 长]:无法识别的选择发送到实例0x174624540' *第一掷调用堆栈:
我觉得你没有的时候调用它,只需要在变量名 – Tj3n
由于申报类型迅速,好像参数的一部分(如何使词典中SWIFT)可能是错的。 –
我更新了这个问题,如果你有时间的话可以看看,这将不胜感激。 –