2016-05-30 22 views
0

Xcode内のfirebase参照で最後の値をswiftで取得し、10個のUIButtonのタイトルに10個の値を割り当てようとしています。私は多くのことを試しましたが、ほとんどの場合、何も起こらないか、クラッシュします。私はブレークポイントを試しましたが、コードが非常に小さく、run0-timeエラーや警告がないので、私がそれをやっていること(コンセプト)ともっと関係があります。アドバイスはすばらしく、これはiOSとfirebaseの早い時期に将来の見通しに役立つことを願っています。あなたの時間とエラーのために本当にありがとう!最後の10個のFirebase値を取得して10個のUIButtonのタイトルに割り当てる

以下

ビュー負荷クラッシュをトリガされ、私の最新のコードです:deck1と仮定すると、

// 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) 

      }) 

     } 

答えて

0

- 、そう

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

を試し、deck10はすでに店のように定義されている

// 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] 
    } 

おそらくいくつかのループを代わりに使用できます

+0

基本的に私のコードの単純なバージョンですが、必要のないものをカットするだけでうまくいくでしょうか?私はそれを試みます。どうも。 – EQOxx123

+0

あなたのエラーコードもわかりません。エラーを投稿しますか? – Chris

+0

実行時エラーはありませんが、アプリの読み込み時にマイナークラッシュが発生します。そのエディションでは、10ボタンのtextLabelはデフォルトのNoneに設定されています – EQOxx123

関連する問題