当我为像 Twitter 这样的应用程序输入代码时,我从初始值设定项返回错误,而没有使用代码 var ref 初始化所有存储的属性: FIRDatabaseReference! 说自我引用没有初始化
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 aaa = meme()
aaa.key = "some key"
aaa.userName = "some username"
第一个 init 方法显然没有设置 "ref",这完全解释了你的问题。而且我不确定您为什么将所有内容声明为强制可选。你有理由吗?无论如何,您的两个 init 方法都将所有内容(您错过的 ref 除外(初始化为非可选值。