Как правильно написать блоки (замыкания) в swift3?
Я пытаюсь найти, как я могу написать эти блоки в swift3, любая помощь будет оценена.
Я использую obj-c PocketSDK в проекте swift3. https://github.com/Pocket/Pocket-ObjC-SDK
Я могу использовать этот SDK нормально с правильными настройками Bridge-Header, но все еще не уверен, как я могу написать часть блоков.
OBJ-с
[[PocketAPI sharedAPI] callAPIMethod:@"get"
withHTTPMethod:PocketAPIHTTPMethodGET
arguments:arguments
handler:^(PocketAPI *api, NSString *apiMethod, NSDictionary *response, NSError *error) {
}];
Это тип def в 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
}
@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 length]: нераспознанный селектор отправлен в экземпляр 0x174624540 2017-08-15 14: 05: 51.345611 + 0900 Voicepaper2 [1062: 286998] * Завершение работы приложения из-за неисчислимого исключения "NSInvalidArgumentException", причина: '-[_Swre: NN: Длина_запуска:: нераспознанный селектор отправлен на экземпляр 0x174624540' * Первый вызов стека вызовов:
1 ответ
Решено! Это был окончательный ответ, спасибо!
let arguments: [String: Any] = [
"state": "unread",
"count": "20"
]
PocketAPI.shared().callMethod("get", with: PocketAPIHTTPMethodGET, arguments: arguments) {
(api,
apiMethod,
response,
error) in
}