2016-05-30 3 views
0

Ich habe versucht, die letzten Werte in einer Firebase-Referenz innerhalb von Xcode mit swift zu erfassen und dann diese zehn Werte zehn verschiedenen UIButton-Titeln zuzuordnen. Ich habe viele Dinge ausprobiert, aber meistens passiert nichts oder ich stürze ab. Ich habe Breakpoints ausprobiert, aber weil der Code so klein ist und es keine Run0-Time-Fehler oder Warnungen gibt, hat es mehr damit zu tun, wie ich es mache (das Konzept). Jeder Rat wäre großartig und ich hoffe, dass dies mit ihren frühen iOS- und Firebase-Tagen zukünftigen Ansichten hilft. Vielen Dank für Ihre Zeit und Fehler!Ergreifung der letzten zehn Firebase-Werte und Zuordnung zu zehn UIButton-Titeln

Im Folgenden meine letzte Code, der einen Absturz auslöst, wenn die Ansicht Lasten:

// import UIKit (already imported the module) 

// UIButtons deck1 - deck10 are defined 

// firebase reference refName is created 

     override func viewDidLoad() { 

      super.viewDidLoad() 

      var titleArray = [String]() 

      var buttonArray : [UIButton:String] = [ // creating a dictionary to make a link from UIButtons to a String that will contain their title 

       deck1 : "", 
       deck2 : "", 
       deck3 : "", 
       deck4 : "", 
       deck5 : "", 
       deck6 : "", 
       deck7 : "", 
       deck8 : "", 
       deck9 : "", 
       deck10 : "" 

      ] 

      refName.queryLimitedToLast(10).observeEventType(.Value, withBlock: { snapshot in // getting last 

       for child in snapshot.children { // getting the last ten values 

        let title = child.value as String // assigning each value to a variable 

        titleArray.append(title) // adding each variable to an array of values as strings 

       } 

       buttonArray[self.deck1] = titleArray[0] // assigning each value that is a string in the array 'titleArray' to a UIButton key 
       buttonArray[self.deck2] = titleArray[1] 
       buttonArray[self.deck3] = titleArray[2] 
       buttonArray[self.deck4] = titleArray[3] 
       buttonArray[self.deck5] = titleArray[4] 
       buttonArray[self.deck6] = titleArray[5] 
       buttonArray[self.deck7] = titleArray[6] 
       buttonArray[self.deck8] = titleArray[7] 
       buttonArray[self.deck9] = titleArray[8] 
       buttonArray[self.deck10] = titleArray[9] 

       self.deck1.setTitle(buttonArray[self.deck1], forState: UIControlState.Normal) 
       self.deck2.setTitle(buttonArray[self.deck2], forState: UIControlState.Normal) 
       self.deck3.setTitle(buttonArray[self.deck3], forState: UIControlState.Normal) 
       self.deck4.setTitle(buttonArray[self.deck4], forState: UIControlState.Normal) 
       self.deck5.setTitle(buttonArray[self.deck5], forState: UIControlState.Normal) 
       self.deck6.setTitle(buttonArray[self.deck6], forState: UIControlState.Normal) 
       self.deck7.setTitle(buttonArray[self.deck7], forState: UIControlState.Normal) 
       self.deck8.setTitle(buttonArray[self.deck8], forState: UIControlState.Normal) 
       self.deck9.setTitle(buttonArray[self.deck9], forState: UIControlState.Normal) 
       self.deck10.setTitle(buttonArray[self.deck10], forState: UIControlState.Normal) 

      }) 

     } 

Antwort

0

Unter der Annahme, Deck1 - deck10 als Auslässe bereits definiert sind, versuchen

deck1.titleLabel!.text = titleArray[0] 
    deck2.titleLabel!.text = titleArray[1] 
    .... 

So

// import UIKit (already imported the module) 

    // UIButtons deck1 - deck10 are defined 

    // firebase reference refName is created 

    override func viewDidLoad() { 

     super.viewDidLoad() 

     var titleArray = [String]() 

     refName.queryLimitedToLast(10).observeEventType(.Value, withBlock: { snapshot in // getting last 

      for child in snapshot.children { // getting the last ten values 

       let title = child.value as String // assigning each value to a variable 

       titleArray.append(title) // adding each variable to an array of values as strings 

      } 

     } 
    } 

override func viewDidAppear(animated: Bool) { 

      deck1.titleLabel!.text = titleArray[0] // assigning each value that is a string in the array 'titleArray' to a UIButton key 
      deck2.titleLabel!.text = titleArray[1] 
      deck3.titleLabel!.text = titleArray[2] 
      deck4.titleLabel!.text = titleArray[3] 
      deck5.titleLabel!.text = titleArray[4] 
      deck6.titleLabel!.text = titleArray[5] 
      deck7.titleLabel!.text = titleArray[6] 
      deck8.titleLabel!.text = titleArray[7] 
      deck9.titleLabel!.text = titleArray[8] 
      deck10.titleLabel!.text = titleArray[9] 
    } 

und vielleicht kann stattdessen eine Schleife verwendet werden

+0

Also im Grunde eine einfachere Version meines Codes, aber nur schneiden, was nicht benötigt wird, kann funktionieren? Ich werde es versuchen. Danke. – EQOxx123

+0

nicht sicher, was Ihr Fehlercode auch ist. posten Sie Ihren Fehler? – Chris

+0

Es gibt keine Laufzeitfehler, aber ein kleiner Absturz beim Laden der App. in einer Ausgabe dazu ist die textLabel der ten Schaltfläche immer noch auf den Standardwert None eingestellt – EQOxx123

Verwandte Themen