Как правильно написать блоки (замыкания) в 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
    }
Другие вопросы по тегам