Как отправить данные ответа json через функцию обратного вызова в iOS swift? - PullRequest
0 голосов
/ 06 ноября 2019

Когда пользователь запрашивает вход в систему из примера приложения в платформу, он попадает в API и возвращает обратный вызов на основе значения bool.

Теперь я получаю ответный ответ от API и печатаю значение true. Теперь я пытаюсь получить данные ответа json из framework в sampleapp с помощью обработчика завершения.

Вот мой ответ json: (пытаюсь передать username, authToken и expireDate в sampleapp)

  ["username": Optional("demo"), "password": Optional("demo")]
  SUCCESS: {
  authToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhOGZsb3ciLCJleHAiOjE1NzMxOTY2MjUsInVzZXJuYW1lIjoiZGVtbyJ9.HvNpPPIWeM5-HuZ7wJl3JWIAbIlz-ktvfsRlIl6OlGE";
 expireDate = "Fri Nov 08 07:03:45 UTC 2019";
 groups =     (
    accounting,
    "camunda-admin",
    management,
    sales
    );
   username = demo;
}

вот мой код структуры:

    public func loginApiCall(username: String?, password: String?,callback : @escaping ((Bool) -> Void), completionHandler: (_ genres: NSArray) -> () ) {

    let parameters = [
        "username": username,
        "password": password
    ]
    print(parameters)

    let url = "https://suryoday-staging.autonom8.com/engine-rest/authentication/"
Alamofire.request(url, method: .post, parameters: parameters as Parameters, encoding: JSONEncoding.default, headers: [:]).responseJSON {
        response in

    if (response.result.isSuccess) {

        callback(true)

    } else if (response.result.isFailure) {

        callback(false)
    }

    }

}

А вот мой пример кода, где я пытаюсь получить данные ответа.

    let apiCall = APICall.init()
    apiCall.loginApiCall(username: "dem", password: "dem") { (status)   in
        print(status,"--")

    }

1 Ответ

0 голосов
/ 06 ноября 2019

Использование NSDictionary вместо NSArray:

public func loginApiCall(username: String?, password: String?,callback : @escaping ((Bool) -> Void), completionHandler: (_ genres: NSDictionary) -> () )   

и вызов: завершениеHandler с responseJon

if (response.result.isSuccess) {

    callback(true)
    completionHandler(response.result.value) // 
} else if (response.result.isFailure) {

    callback(false)
}

Пример кода:

self.loginApiCall(username: "1111", password: "22222", callback: { (status) in

}) { (json) in
        // parse json    
} . 

p / s: ноя не знаю, зачем вам нужно callback : @escaping ((Bool) -> Void).
попробовать:
public func loginApiCall(username: String?, password: String?, completionHandler: (_ isSuccess: Bool, _ genres: NSDictionary) -> () )

...