Я делаю HTTP-запрос с NSURLSession
, который требует закрытия, которое будет выполняться в конце запроса. Внутри замыкания я пытаюсь вызвать функцию и передать объект returnList
этой функции.Вызов функции и прохождение параметров из замыкания в Swift
Проблемы: Когда я распечатать список с функцией callback()
, она пуста, даже если я присвоить значение объекта списка внутри крышки. В чем причина этого поведения и что мне нужно сделать, чтобы передать объект функции, которая вызывается внутри замыкания?
var returnList = [ReturnList]()
...
...
func httpRequestFunction(callback: ([ReturnList])->()){
let task = NSURLSession.sharedSession().dataTaskWithURL(url){(data, response, error) in
if error != nil {
//TODO do some error handling
return
}
var xmlUtil = XMLUtil(data: data)
self.returnList = xmlUtil.parseXML()
println(self.returnList.count) // returns 1
callback(self.returnList) /*the callback prints returnList.count which is then 0 */
}
task.resume()
}
У вас недостаточно кода для вашего вопроса, чтобы иметь смысл. Что такое ReturnList? Откуда появился обратный вызов и как он выглядит? И так далее. – matt
ReturnList - это просто определенный тип. Список может быть любого типа. callback() - это просто некоторая самоопределяемая функция, которая принимает в качестве параметра список объектов ReturnList. – TheBaj
Итак, я понял, что вы не хотите отвечать на мои вопросы. Но поскольку то, что вы описываете, не является ожидаемым поведением, что делает невозможным вам помочь. Информация, необходимая для того, чтобы догадаться, почему это происходит, если это происходит, отсутствует в вопросе, поскольку вы его поставили. – matt