IOS快速异常,同时保存在firebase中

时间:2017-06-12 04:29:16

标签: ios swift firebase firebase-realtime-database

我有一个问题。我想将数据保存到firebase数据库中。这是我的班级:

import UIKit
import Firebase
import FirebaseDatabase
import FirebaseInstanceID

class ParamController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    var token = InstanceID.instanceID().token();
    var ref: DatabaseReference = Database.database().reference(token);

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        ref.childByAutoId().child("status").setValue(statusArray[row])
    }



    @IBAction func saveData(_ sender: UIButton) {

        ref.childByAutoId().child("age").setValue(myAge.value)


    }

}
xcode写道:

  

无法在正确的初始化程序中使用实例成员'token';   正确的初始化程序在'self'可用之前运行

我是swift的新手,我已经编写了android。所以我需要在令牌下保存这些数据。

2 个答案:

答案 0 :(得分:0)

问题是Swift默认初始值设定项不能引用另一个属性的值,因为在初始化时,属性还没有存在。

要解决这个问题,只需使用带有延迟初始化的self.token:

lazy var ref : DatabaseReference =Database.database().reference(self.token)

答案 1 :(得分:0)

我们不能在属性初始化器中使用实例成员;属性初始化程序在“自我”之前运行是可用的。

因此,为了初始化属性,我们应该使用init()方法,即构造函数。

例如: -

var token = InstanceID.instanceID().token()
var ref: DatabaseReference
init() {
   ref =  = Database.database().reference(token)
}