2017-07-25 77 views
-1

当我输入一个Twitter应用程序一样我从初始的错误返回,而不与初始化代码变种裁判存储的所有属性代码: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] 
} 

}`

+0

*提示:*如何是最后一个属性定义与所有其他有什么不同? - 请注意,Xcode在问题导航器中告诉你确切的问题。 –

+0

从来没有注意到,但在var ref:FIRDatabaseReference它说self.ref未初始化,但不适当的更新后的代码的其余部分 – almond

回答

0

目前尚不清楚的目标是什么,但如果需要一个变种,它应该有一个默认值初始化

init() { 
    self.key = "some key" 
    self.userName = "some user name" 
} 

内初始化或者,更改结构/类别变量

struct meme { 
    var key = "" 
    var userName = "" 
} 

和变量可以初始化o n the fly

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

第一个init方法显然没有设置“ref”,它完全解释了您的问题。我不确定为什么你将所有内容都声明为强制选项。你有这个理由吗?无论如何,你的init方法都会初始化所有的东西(除了你错过的ref)以外的非可选值。