代码之家  ›  专栏  ›  技术社区  ›  user1904273

IOS/秒wift:syntax to 在闭包中返回自定义对象

  •  0
  • user1904273  · 技术社区  · 6 年前

    我想把一些异步获得的JSON放在一个对象中,然后在闭包中返回。然而,我的代码给出了一个错误。

    func postToWebSwervice (aString:String,completion:@escaping (_ response:Array<Any>)->(MyObject)){
    //get some JSON from web
    let myObject = MyObject()
    //parse JSON
    myObject.title = "Palo Alto"
    myObject.temp = 62
    
    DispatchQueue.main.async {//open async
                           completion( myObject )
                        }
    }
    

    我得到一个错误: 'Cannot convert object of type myObject to closure result type Void (aka ())

    我猜你不能“归还”物品。但正确的语法是什么,使它在完成时可用于调用方法呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jogendar Choudhary    6 年前

    替换 Array<Any> MyObject (您需要像thi一样更改完成块语法)

    func postToWebSwervice (aString:String,completion:@escaping (_ response: MyObject)-> Void){
        //get some JSON from web
        let myObject = MyObject()
        //parse JSON
        myObject.title = "Palo Alto"
        myObject.temp = 62
    
        DispatchQueue.main.async {//open async
            completion( myObject )
        }
    }