0

我正在尝试找到如何在 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' *第一次抛出调用堆栈:

4

1 回答 1

0

解决了!这是最终答案,谢谢!

    let arguments: [String: Any] = [
        "state": "unread",
        "count": "20"
    ]

    PocketAPI.shared().callMethod("get", with: PocketAPIHTTPMethodGET, arguments: arguments) {
        (api,
        apiMethod,
        response,
        error) in
    }
于 2017-08-15T05:18:08.797 回答