IOS / Swift: синтаксис для возврата пользовательского объекта при закрытии - PullRequest
0 голосов
/ 10 октября 2018

Я хотел бы поместить некоторый 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 Ответ

0 голосов
/ 10 октября 2018

Замените 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 )
    }
}
...