2017-06-27 5 views
0

Hallo, ich bin ein Neuling Entwickler aus Taiwan. Ich habe begonnen, Firebase (IOS) Speicher für meine App zu verwenden, und ich möchte ImageSliderShow verwenden, um eine Bildschieberegleransicht zu erstellen. Nachdem ich die Image-URL von Firebase erhalten habe. Ich habe die URL-Zeichenfolge an Array angehängt, dann habe ich die App ausgeführt. Die Bild-Slider-Ansicht funktioniert gut, aber das neue Bild zeigt nichts. Dann habe ich die URL String vor und nach dem Anfügen an das Array gedruckt. Es gab mir zwei verschiedene Saiten. Hier ist mein Code.Firebase Speicher Bild URL funktioniert nicht

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-Funktion:

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))") 
     } 
    } 
} 

Der Ausgang:

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) 

Die 3. Ausgabe nur seltsam ... Ist es möglich, eine Codierung Problem sein? Und ich entschuldige mich für mein schlechtes Englisch.

Antwort

0

Endlich finde ich es heraus. Ich lasse die Art des Ergebnisses als URL und dann funktioniert es einfach perfekt.

Verwandte Themen