2017-06-27 14 views
0

こんにちは私は台湾の初心者の開発者です。 私は自分のアプリにfirebase(ios)ストレージを使い始めました。画像のスライダービューを作るのにImageSliderShowを使いたいと思います。私はfirebaseから画像のURLを取得した後。私は配列にURL文字列を追加し、私はアプリを走らせた。イメージスライダービューはうまく動作しますが、新しいイメージには何も表示されません。次に、配列に追加する前後にurl Stringを出力しました。それは私に2つの異なる文字列を与えました。ここに私のコードです。Firebase storage image url not working

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にして、完全に機能します。