我想找到如何在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)可能是錯的。 –
我更新了這個問題,如果你有時間的話可以看看,這將不勝感激。 –