복붙노트

[SWIFT] Alamofire와 SwiftyJson와 함수에서 값을 반환

SWIFT

Alamofire와 SwiftyJson와 함수에서 값을 반환

해결법


  1. 1.당신의 getMenu 함수에 대한 완료 핸들러의 예는, 메뉴를 가정하면 "반환"원하는 값입니다 :

    당신의 getMenu 함수에 대한 완료 핸들러의 예는, 메뉴를 가정하면 "반환"원하는 값입니다 :

    class MenuManager {
    
        // the handler takes an EKMenu argument
        class func getMenu(menu_id: Int, completionHandler: (menu: EKMenu) -> ()) {
    
            let url="https://www.domain.com/arc/v1/api/menus/\(menu_id)/mobile"
            Alamofire.request(.GET, url).responseJSON() {
                (_, _, data, _) in
                println("within menu request")
                var json=JSON(data!)
                var menu=EKMenu()
                menu.name=json["menu"]["name"].stringValue
                for (key, subJson) in json["menu"]["menu_headers"]{
                    EKMenu.processMenuHeaders(subJson)
                }
    
                // wrap the resulting EKMenu in the handler
                completionHandler(menu)
    
            }
        }
    
        class func processMenuHeaders(menu_header: JSON){
            let mh_name=menu_header["name"].stringValue
            println("mh_name: \(mh_name)")
            for (key, subJson) in menu_header["menu_headers"]{
                EKMenu.processMenuHeaders(subJson)
            }
        }
    
    }
    
    MenuManager.getMenu(42, completionHandler: { menu in
        // here the handler gives you back the value
        println(menu)
    })
    
  2. from https://stackoverflow.com/questions/30771881/returning-a-value-from-a-function-with-alamofire-and-swiftyjson by cc-by-sa and MIT license