2014-12-28 4 views
0

Я новичок в разработке iOS и нуждаюсь в помощи по следующей проблеме. У меня есть код ниже, который загружает данные JSON из Интернета и заполняет массив этим.Данные JSON - обработчик завершения

let urlPath = "……………………………" 
    let url = NSURL(string: urlPath) 

    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in 

     if (error != nil) { 
      println(error) 
     } else { 

     let jsonResult: AnyObject = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil)! 

     dispatch_async(dispatch_get_main_queue()) { 

      for var i = 0; i < jsonResult.count; i++ { 
       self.sales[i] = jsonResult[i]["daily_sales"] as NSString 
      } 
     } 
     } 
     }) 

    task.resume() 

    println(self.sales[0]) 

В конце приложение сработало, так как оно не дождалось загрузки данных JSON.

Каковы альтернативные способы решения этой проблемы?

ответ

1

Это падает из-за этого println(self.sales[0]). Вы пытаетесь отобразить продажи, которые даже не загружены. Поместите эту строку в конец блока завершения, и вы должны быть в порядке

+0

спасибо за отзыв .. как насчет того, если я хочу назвать массив продаж в рамках других функций? – commodore64

+0

вы должны быть уверены, что они были загружены первыми. Или, по крайней мере, проверьте, что ваш массив не пуст, прежде чем пытаться вызвать на нем несуществующий индекс. – Yaman

Смежные вопросы