【问题标题】:Swift 3: Return from initializer errorSwift 3:从初始化错误返回
【发布时间】:2016-09-19 04:45:01
【问题描述】:

我收到错误消息:从初始化程序返回而不初始化所有存储的属性。

我正在使用 swift 3 和 xcode 8 作为我的后端。

import Foundation
import FirebaseDatabase

struct Post {

var ref: FIRDatabaseReference
var key: String!
var username: String!
var postId: String!
var postText: String!



init(username: String, postId: String, postText: String, key: String = ""){

    self.username = username
    self.postId = postId
    self.postText = postText

}//<--- im getting the error right here


init(snapshot: FIRDataSnapshot) {

    let values = snapshot.value as! Dictionary<String,String>

    self.username = values["username"]
    self.postText = values["postText"]
    self.postId = values["postId"]
    self.ref = snapshot.ref
    self.key = snapshot.key

}

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

    return ["username":username as AnyObject, "postText":postText as AnyObject,"postId":postId as AnyObject]

}


}

知道如何解决这个问题吗?

【问题讨论】:

    标签: swift firebase swift3 init xcode8


    【解决方案1】:

    存储的属性ref 是非可选类型。

    根据规则,所有非可选属性必须在每个提供的初始化程序中初始化。

    这意味着您必须为该属性分配一个初始值,或者您将该属性设为可选。

    【讨论】:

    • 这到底是什么意思?我必须在我调用 key、postText 等的地方调用 ref?
    • 对不起,伙计,我不是要痛苦,但有什么办法可以告诉我你的意思。比如我要补充什么?我不熟悉 swift 和一切,并试图学习这一切。
    • 哇!没关系,我明白你的意思了。我不敢相信我错过了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多