2017-01-08 4 views
2

Вот строка, я получаю сообщение об ошибке на:Ошибка говорит «значение типа„FIRDatabaseReference“не имеет ни одного члена" наблюдать»

databaseHandle = ref.child("Posts").observe(.childAdded, withBlock: { (snapshot) in 
     self.postData.append("") 
    }) 

Ниже всего кода ...

import UIKit 
import FirebaseDatabase 

class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 


    @IBOutlet 
    var tableView: UITableView! 

     var ref: FIRDatabaseReference! 
      var databaseHandle: FIRDatabaseHandle ? 

       var postData = [String]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
      // Do any additional setup after loading the view, typically from a nib. 

     tableView.delegate = self 
     tableView.dataSource = self 



     ref = FIRDatabase.database().reference() 

     databaseHandle = ref.child("Posts").observe(.childAdded, withBlock: { 
      (snapshot) in 
      self.postData.append("") 
     }) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
      // Dispose of any resources that can be recreated. 
    } 

    @IBAction func JumpTabLive(sender: AnyObject) { 

     tabBarController ? .selectedIndex = 1 
    } 

    @IBAction func JumpTabLocal(sender: AnyObject) { 

     tabBarController ? .selectedIndex = 2 
    } 

    @IBAction func JumpTabOnline(sender: AnyObject) { 

     tabBarController ? .selectedIndex = 3 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) - > Int { 

     return postData.count 

    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) - > UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("PostCell") 
     cell ? .textLabel ? .text = postData[indexPath.row] 

     return cell! 


    } 


} 

ответ

1

правильный блок кода должен быть:

databaseHandle = ref.child("Posts").observe(.childAdded, with: { 
     (snapshot) in 
     self.postData.append("") 
    }) 

Что вы замечаете между этим правильным кодом и кодом выше? См. Блок завершения. Шахта с и ваша - withBlock. При кодировании используйте функцию автозаполнения. Например, вы вводите этот блок кода, и Xcode теперь спрашивает вас, что делать с блоком завершения кода Firebase. Вы должны просто дважды щелкнуть по блоку завершения, и Xcode исправит все для вас.

+0

Благодарим за отзыв. Я изменил с помощью Block, но все равно получаю то же сообщение об ошибке –

+0

Используя предложение автозаполнения, я смог заставить его работать. В результате получилось: databaseHandle = ref.child ("Posts"). Обратите внимание, что элементEventType (.ChildAdded, withBlock: {(моментальный снимок)) в self.postData.append ("") ... спасибо за помощь! –

+0

Oh Вероятно, мы используем разные версии Firebase SDK. В любом случае просто используйте автоматическое завершение/предложение Xcode в будущем.: D Рад, что вы решили это сейчас. Можете ли вы выбрать это как ответ на свой пост? – Glenn

Смежные вопросы