У меня есть этот метод, который находится внутри класса с именем WebService, внутри этого метода я получаю данные из API:
func GetTableDataOfPhase(phase: String, completion: (result: AnyObject) -> Void)
{
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
let requestString = NSString(format:"%@?jobNo=%@", webservice, phase) as String
let url: NSURL! = NSURL(string: requestString)
let task = session.dataTaskWithURL(url, completionHandler: {
data, response, error in
dispatch_async(dispatch_get_main_queue(),
{
do
{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? [AnyObject]
completion(result: json!)
}
catch
{
print(error)
}
})
})
task.resume()
}
Теперь я вызываю этот метод из другого класса так:
WebService().GetTableDataOfPhase("ORC0005")
{
(result: AnyObject) in
self.data = result as! NSArray
}
Это работает, как и ожидалось. Теперь я пытаюсь получить результаты от обработчика завершения
поэтому я могу сделать это:
WebService().GetTableDataOfPhase("ORC0005")
{
(result: AnyObject) in
self.data = result as! NSArray
}
print(self.data.count)
прямо сейчас self.data.count равен 0, но когда я помещаю этот оператор печати в фигурные скобки, он равен 70, как мне получить результаты вне фигурных скобок, чтобы я мог использовать self.data.count ?
[AnyObject]
->AnyObject
->NSArray
— это три разных типа для одного и того же. - person vadian   schedule 17.08.2016