2017-07-25 69 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)以外的非可選值。