2015-04-28 4 views
1

Использование Swift я могу сделать обратный вызов, как следующее:Swift обратного вызова Использование встроенных функций

userService.validateToken("6beba35f", success: onSuccess, failure: onFailure) 

func onSuccess(status_code: Int, data: String) 
{ 
    var dd : String = "" 
} 

func onFailure(status_code: Int, data: String) 
{ 
    var dd : String = "" 

} 

, но я хотел бы иметь функции на той же строке, что и вызов:

Пример 1:

userService.validateToken("6beba35f", 
     success: (Int, String) ->() 
      { 
     }, 
     failure: (Int, String) ->() 
      { 
    }) 

Пример 2:

userService.validateToken("6beba35f", 
     success: (Int, String) 
      { 
     }, 
     failure: (Int, String) 
      { 
     }) 

оба дают ошибки. Я думаю, им близко с примером 1, но он продолжает давать мне ошибку «Прогнозный, Seperator», и когда я его добавить «»

success: (Int, String), ->() но ошибка продолжает говорить „Ожидалось, сепаратор“

Любой идеи о том, что такое решения?

В том числе функции

func validateToken(token: String, success: (Int, String) -> Void, failure: (Int, String) -> Void) 
{ 
    if(Network.isOnline()) 
    { 
     var url: String = Commons.plistValue("Base URL") + "/security/" + token 

     Alamofire.request(.GET, url) 
      .responseJSON { (request, response, json, error) in 

       let jsonData: JSON = JSON(json!) 
       let statusCode: Int = response!.statusCode 

       if(statusCode == 202) 
       { 
        success(statusCode, jsonData["status"]["message"].stringValue) 
       } 
       else 
       { 
        failure(statusCode, jsonData["status"]["message"].stringValue) 
       } 
      } 
    } 
    else 
    { 
     failure(-1, "No Internet Connection") 
    } 

} 

Использование Фикс

userService.validateToken("6beba35f", 
     success: { status_code, data in 
      (
       println(status_code) 
      ) 

     }, 
     failure: { status_code, data in 
      (
       println(status_code) 
      ) 
    }) 
+0

Я включил функцию validateToken – adviner

+1

Вы пробовали '{status_code, данные в (код здесь)}'? – zneak

+0

OMG ваш человек. Большое спасибо – adviner

ответ

1

Есть several ways объявить или использовать укупорочные средства. Самый простой из них вы ищете, вероятно:

{ status_code, data in 
    println(status_code) 
} 

Это должно быть использовано таким образом, что компилятор может определить тип status_code, data, и определить, что не должно быть никакого возвращаемого значения. Например, вы можете передать его как параметр функции (что вам нужно) или присвоить его переменной с соответствующими типами подсказок.

+0

Спасибо за ссылку также помогает тонн :) – adviner

+0

У меня есть аналогичный вопрос, здесь я все еще пытаюсь выяснить, у него есть открытая щедрость если кто-то хочет нанести удар по нему: http://stackoverflow.com/questions/29871633/how-would-i-create-a-callback-around-an-xml-request –

Смежные вопросы