0

このブロックをSwift3で書き込む方法を見つけようとしています。助けていただければ幸いです。

swift3 プロジェクトで obj-c PocketSDK を使用しています。 https://github.com/Pocket/Pocket-ObjC-SDK

この SDK を適切な Bridge-Header 設定で問題なく使用できますが、ブロック部分をどのように記述できるかはまだわかりません。

obj-c

[[PocketAPI sharedAPI] callAPIMethod:@"get"
                       withHTTPMethod:PocketAPIHTTPMethodGET
                            arguments:arguments
                              handler:^(PocketAPI *api, NSString *apiMethod, NSDictionary *response, NSError *error) {
                              }];

これは、PocketSDK の型定義です。

-(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
    }

@更新しました

型定義なしでコンパイル エラーを回避できますが、引数を入れると認識されないセレクターを取得します。引数に 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]に送信されましたインスタンス 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 に答える