Я пытаюсь создать функцию, которая возвращает NSDictionary, который в свою очередь должен быть возвращен из закрытия.SWIFT: Передача переменной от закрытия к функции
Я относительно новичок в Swift, и у меня проблемы с этим. Любая помощь будет принята с благодарностью.
// Takes a String, needs to return a NSDictionary
func login(action: String) -> NSDictionary
{
let command = NSURL(string: "\(connectionType)://\(url)/includes/api.php?username=\(username)&password=\(password)&accesskey=\(apiKey)&action=\(action)&responsetype=json")
print(command!)
let session = NSURLSession.sharedSession()
// Get error here when changing Void > NSDictionary
let task = session.dataTaskWithURL(command!) {
(data, response, error) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
do {
let result = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary
print(result) // Need this returned
} catch {
// handle error
print(error)
}
}
}
task.resume()
return result As! NSDictionary // returns empty, because of -> Void??
}
То, что вы пытаетесь сделать, невозможно. 'result' еще не существует, поскольку он еще не создан. 'NSURLSession' займет некоторое время, чтобы загрузить данные JSON (это может занять несколько минут), и только после этого вы сможете получить доступ к значению результата. –