このブロックを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 に送信された認識されないセレクター *最初のスロー コール スタック: