swift 4 模型类错误:从初始化程序返回而不初始化所有存储的属性

克里斯

我为具有标题和内容属性的笔记创建了一个模型类。我在第二个 init 中收到错误消息:从初始化程序返回而不初始化所有存储的属性。我觉得有些东西我错过了,我似乎看不到它。这是代码:

class Note{
private var _title: String
private var _content: String

var title: String!{
    return self._title
}

var content: String!{
    return self._content
}

init(title: String, content: String){
    self._title = title
    self._content = content
}

init(noteData: Dictionary<String, AnyObject>) {


    if let title = noteData["title"] as? String {
        self._title = title
    }

    if let content = noteData["content"] as? String {
        self._content = content
    }
}
}
里奥·达布斯

您必须在其初始值设定项中初始化您的类的所有属性。关于您的字典初始值设定项,您应该使其容易出错并在缺少键/值对的情况下返回 nil:

class Note {
    let title: String
    let content: String
    init(title: String, content: String) {
        self.title = title
        self.content = content
    }
    init?(dictionary: [String: Any]) {
        guard
            let title = dictionary["title"] as? String,
            let content = dictionary["content"] as? String
        else { return nil }
        self.title = title
        self.content = content
    }
}

请注意,如果使用结构而不是类,您甚至不必为自定义对象实现初始化程序:

struct Note {
    let title: String
    let content: String
    init?(dictionary: [String: Any]) {
        guard
            let title = dictionary["title"] as? String,
            let content = dictionary["content"] as? String
            else { return nil }
        self.title = title
        self.content = content
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Swift 错误消息 - 从初始化程序返回而不初始化所有存储的属性

从初始化器返回而不初始化所有存储的属性swift iOS

Swift初始化程序中的错误

Swift:XCTest类“ FirstDemoTests”没有初始化程序

类没有初始化程序Swift

Swift 2.2:“ XX”类没有初始化程序

Swift-类没有初始化程序

SwiftUI 中的“从初始化程序返回而不初始化所有存储的属性”错误

从初始化程序返回而不初始化所有存储的属性-SwiftUI绑定错误

Swift 初始化程序

由于“内部”保护级别为swift 4,因此无法访问扩展初始化程序

没有设置存储属性的Swift初始化程序失败

Swift 成员明智的初始化程序不包含具有默认常量属性的参数

使用内联初始化程序时,Swift类初始化会崩溃

在初始化所有存储的属性之前,在属性访问“userPreferences”中使用了 Swift ObservedObject“self”

Swift 5.1 @propertyWrapper-在初始化所有存储的属性之前在属性访问中使用“自我”

从初始化程序返回而不初始化所有存储的属性Xcode 8

Swift:引用类型存储属性的线程安全初始化

初始化模型 - Swift 5

错误:从初始化程序返回而不初始化 SwiftUI 项目中的所有存储属性?

提取Swift类的constant属性的初始化代码

Swift 4:尝试连接两个字符串时,无法在属性初始化程序中使用实例成员“ MAIN_URL”

扩展UICollectionView的类的初始化程序(Swift 3.2)

在没有初始化的情况下进行结构初始化时的Swift初始化属性

Swift:默认属性与初始化程序中的设置

Swift 属性包装器初始化错误

Swift 类初始化混乱

Swift类中的初始化器

Swift中的类初始化