Ios 从初始值设定项返回,但不初始化所有存储的属性(self.ref未初始化)

Ios 从初始值设定项返回,但不初始化所有存储的属性(self.ref未初始化),ios,firebase,firebase-realtime-database,swift2,Ios,Firebase,Firebase Realtime Database,Swift2,当我为一个类似twitter的应用程序输入代码时,我从初始化器中得到了错误返回,而没有使用代码var ref:FIRDatabaseReference初始化所有存储的属性!表示self-ref未初始化 import Foundation import FirebaseDatabase struct meme { var ref: FIRDatabaseReference! var key: String! var username: String! var name: String! v

当我为一个类似twitter的应用程序输入代码时,我从初始化器中得到了错误返回,而没有使用代码var ref:FIRDatabaseReference初始化所有存储的属性!表示self-ref未初始化

import Foundation
import FirebaseDatabase

struct meme {



var ref: FIRDatabaseReference!
var key: String!
var username: String!
var name: String!
var tweetId: String!
var tweetText: String!
var tweetImageURL: String!
var tweeterImageURL: String


init(username: String, memeId: String, memeText: String, memeImageURL: String, memerImageURL: String, name: String, key: String = ""){

    self.username = username
    self.name = name
    self.memeId = memeId
    self.memeImageURL = memeImageURL
    self.memeText = memeText
    self.memerImageURL = memerImageURL



}




init(snapshot: FIRDataSnapshot){

    self.name = snapshot.value!["name"] as! String
    self.memerImageURL = snapshot.value!["memerImageURl"] as! String
    self.memeText = snapshot.value!["memeText"] as! String
    self.memeImageURL = snapshot.value!["memeImageURL"] as! String
    self.username = snapshot.value!["username"] as! String
    self.name = snapshot.value!["name"] as! String
    self.ref = snapshot.ref
    self.key = snapshot.key
}

func toAnyObject() -> [String: AnyObject]{

    return ["name":name, "username":username, "memeText":memeText,"memeId":memeId,"memerImageURl":memerImageURL,"memeImageURL":memeImageURL]
}

}`

不清楚目标是什么,但如果需要var,则应在init中使用默认值初始化

init() {
   self.key = "some key"
   self.userName = "some user name"
}
或者,更改结构/类变量

struct meme {
   var key = ""
   var userName = ""
}
VAR可以在飞行中初始化

var aaa = meme()
aaa.key = "some key"
aaa.userName = "some username"

第一个init方法显然没有设置“ref”,这充分解释了您的问题。我不知道你为什么把所有东西都宣布为强制期权。你有这样的理由吗?不管怎样,您的两个init方法都会将所有内容(除了缺少的ref)初始化为非可选值

提示:上一个属性定义与所有其他属性定义有何不同请注意,Xcode在问题导航器中告诉您确切的问题。从未注意到,但在var ref:FIRDatabaseReference中,它表示self.ref未初始化,但将更新post以了解其余代码