2017-06-27 93 views
0

嗨,我是来自台湾的新手开发者。 我已经开始为我的应用使用firebase(ios)存储,并且我想使用ImageSliderShow来创建图像滑块视图。我从Firebase获取图片网址后。我将url字符串附加到数组中,然后运行该应用程序。图像滑块视图正常工作,但新图像只显示任何内容。然后我在追加到数组之前和之后打印了url字符串。它给了我两个不同的字符串。这是我的代码。Firebase存储图片网址无效

override func viewDidLoad() { 
    super.viewDidLoad() 
    let URLString = loadURL() 
    URLString.getURL(){ 
     (result:String) in 
     self.ImageSliderView.backgroundColor = UIColor.white 
     self.ImageSliderView.slideshowInterval = 5.0 
     self.ImageSliderView.pageControlPosition = PageControlPosition.insideScrollView 
     self.ImageSliderView.pageControl.currentPageIndicatorTintColor = UIColor.lightGray 
     self.ImageSliderView.pageControl.pageIndicatorTintColor = UIColor.black 
     self.ImageSliderView.contentScaleMode = UIViewContentMode.scaleAspectFill 
     self.ImageSliderView.activityIndicator = DefaultActivityIndicator() 
     self.ImageSliderView.currentPageChanged = { page in 
      print("current page:", page) 
     } 
     print("Result: \(result)")  ////print the result string before appended into array. 
     self.kingfisherSource.append(KingfisherSource(urlString: String(result))!) 
     print("alamoArray3: \(self.kingfisherSource[3].url)") ////print the result string after appended into array. 
     self.ImageSliderView.setImageInputs(self.kingfisherSource) 
     let recognizer = UITapGestureRecognizer(target: self, action: #selector(ResultViewController.didTap)) 
     self.ImageSliderView.addGestureRecognizer(recognizer) 
    } 
} 
func didTap() { 
    let fullScreenController = ImageSliderView.presentFullScreenController(from: self) 
    // set the activity indicator for full screen controller (skipping the line will show no activity indicator) 
    fullScreenController.slideshow.activityIndicator = DefaultActivityIndicator(style: .white, color: nil) 
} 

的getURL功能:

class loadURL { 
let storage = Storage.storage(url: "my-firebase-storage-bucket") 
func getURL(completion:@escaping (_ result:String)->Void) { 
    self.storage.reference().child("images/breakfast/1/1.jpg").downloadURL { url, error in 
     if error != nil { 
      print("Firebase Image URL error: \(String(describing: error))") 
     } else { 
      print("Firebase Image URL: \(String(describing: url!))") 
      completion("\(String(describing: url))") 
     } 
    } 
} 

输出:

Firebase Image URL: https://firebasestorage.googleapis.com/v0/b/my-firebase-storage-bucket/o/images%2Fbreakfast%2F1%2F1.jpg?alt=media&token=15ee8094-ac50-4e93-adc0-200793181bfc 
Result: Optional(https://firebasestorage.googleapis.com/v0/b/my-firebase-storage-bucket/o/images%2Fbreakfast%2F1%2F1.jpg?alt=media&token=15ee8094-ac50-4e93-adc0-200793181bfc) 
alamoArray3: Optional(https://firebasestorage.googleapis.com/v0/b/my-firebase-storage-bucket/o/images%2Fbreakfast%2F1%2F1.jpg?alt=m ... 3181bfc) 

第三输出只是奇怪...是否有可能是编码的问题? 我对我的坏英语表示歉意。

回答

0

最后我只是想出来。我将结果的类型作为URL,然后它完美地工作。

相关问题