2017-02-22 9 views
1

Я пытаюсь загрузить изображения, а затем отобразить их в виде прокрутки.Как получить доступ к Array за пределами закрытия?

  • Сначала ссылки извлекаются из Firebase в виде строки
  • строка преобразуется в массив
  • DLImageLoader загрузки изображений «я» и отображает его в окне просмотра изображений.

Я проверил прокрутку, используя местные изображения, и это работает. Когда я использую код ниже, я получаю ошибку «из индекса». Я использую Swift 3

override func viewDidLoad() 

    { 

     super.viewDidLoad() 

     FIRDatabase.database().reference(withPath: "Main data").child("Home Image URLs").observeSingleEvent(of: .value, with: { (snapshot) in 

      if let snapString = snapshot.value as? String { 



      self.imageURLsVAR = snapString 

       self.imageURLs = self.imageURLsVAR.components(separatedBy: ",") 

     //  self.label.text = String(self.imageURLs[1]) 

      } 

     }) { (error) in 
      print(error.localizedDescription) 
     } 


    for i in 0..<imageURLs.count{ 

      let imageview = UIImageView() 
     // imageview.image = homeImages[i] 

      dlURL = String(imageURLs[i]) 


      DLImageLoader.sharedInstance().image(fromUrl: String(imageURLs[i]), imageView: imageview) 

      imageview.contentMode = .scaleAspectFit 
      let xPosition = self.view.frame.width * CGFloat(i) 
      imageview.frame = CGRect(x: xPosition, y: 0, width: self.imgScrollView.frame.width, height: self.imgScrollView.frame.height) 

      imgScrollView.contentSize.width = imgScrollView.frame.width * CGFloat(i + 1) 
      imgScrollView.addSubview(imageview) 

      view.sendSubview(toBack: imgScrollView) 




     } 





    } 









2017-02-24 22:25:20.037: <FIRMessaging/INFO> FIRMessaging library version 1.2.2 
2017-02-24 22:25:20.045: <FIRMessaging/WARNING> FIRMessaging AppDelegate proxy enabled, will swizzle app delegate remote notification receiver handlers. Add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO 
2017-02-24 22:25:20.118 tda[1828] <Notice> [Firebase/Crash][I-CRA000004] Successfully initialized 
2017-02-24 22:25:20.119 tda[1828] <Notice> [Firebase/Analytics][I-ACS023007] Firebase Analytics v.3700000 started 
2017-02-24 22:25:20.120 tda[1828] <Notice> [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled 
2017-02-24 22:25:20.134 tda[1828] <Notice> [Firebase/Analytics][I-ACS003007] Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist 
2017-02-24 22:25:20.209 tda[1828] <Warning> [Firebase/Analytics][I-ACS005000] The AdSupport Framework is not currently linked. Some features will not function properly. 
2017-02-24 22:25:20.214 tda[1828] <Notice> [Firebase/Analytics][I-ACS023012] Firebase Analytics enabled 
correct 
fatal error: Index out of range 

ответ

0

Вы получаете изображения в блоке (Closure), поэтому вы должны написать код загрузки изображения также в блоке попробовать этот

override func viewDidLoad() 

    { 

     super.viewDidLoad() 

     FIRDatabase.database().reference(withPath: "Main data").child("Home Image URLs").observeSingleEvent(of: .value, with: { (snapshot) in 

      if let snapString = snapshot.value as? String { 



      self.imageURLsVAR = snapString 

       self.imageURLs = self.imageURLsVAR.components(separatedBy: ",") 

     //  self.label.text = String(self.imageURLs[1]) 

      for i in 0..< imageURLs.count-1{ 
      let imageview = UIImageView() 
     // imageview.image = homeImages[i] 
      dlURL = String(imageURLs[i]) 


      DLImageLoader.sharedInstance().image(fromUrl: String(imageURLs[i]), imageView: imageview) 
      imageview.contentMode = .scaleAspectFit 
      let xPosition = self.view.frame.width * CGFloat(i) 
      imageview.frame = CGRect(x: xPosition, y: 0, width: self.imgScrollView.frame.width, height: self.imgScrollView.frame.height) 
      imgScrollView.contentSize.width = imgScrollView.frame.width * CGFloat(i + 1) 
      imgScrollView.addSubview(imageview) 
      view.sendSubview(toBack: imgScrollView) 
     } 
      } 

    }) { (error) in 
     print(error.localizedDescription) 
    } 


} 
+0

я получаю ту же ошибку. Также, когда я добавил отредактированный код, который вы дали, он сказал, чтобы добавить «я» почти ко всему. @varunNaharia –

+0

просто запустите цикл как для i в 0 ..

+0

Я все еще получаю ту же ошибку. Я не могу получить доступ к массиву или переменным где-либо еще, кроме двух фигурных скобок, где я его получил. @varunNaharia –

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