将 Realm Swift 与初始化程序一起使用会引发常量错误

Using Realm Swift with initializers throws constant errors

Xcode 7.1 和 Swift 2.1 以及最新的 Realm Swift 0.96.2

我为 Realm 创建了一个模型 class,但它不断抛出关于 inits 的错误。我在一定程度上了解 subclasses 的初始值设定项,但我无法理解这一点以及它失败的原因。这是我制作的class:

import UIKit
import RealmSwift

class Boxes: Object {

    dynamic var precessor: String = "B";
    dynamic var id: Int = 0;
    dynamic var boxNumber: String {
        return "\(precessor) \(id)";  //computed property
    }
    dynamic var boxDescription: String? = "";
    dynamic var brand: String? = "";
    dynamic let dateCreated: NSDate
    dynamic var dateUpdated: NSDate?
    dynamic var photo: UIImage?
    dynamic var tags: NSArray? = [];

    override static func primaryKey() -> String? {
        return "id";  //sets primary key of the model
    }

    init(precessor: String, id: Int, description: String, brand: String, dateCreated: NSDate, dateUpdated: NSDate) {
        self.precessor = precessor;
        self.boxDescription = description;
        self.brand = brand;
        self.dateUpdated = dateUpdated;
        self.dateCreated = dateCreated;

        super.init();
    }
}

这不会在我尝试时构建,它告诉我:

'required' initializer 'init()' must be provided by subclass of 'Object'

而且我需要添加这一行:

required init() {
        fatalError("init() has not been implemented")
    }

这足以让编译器让我构建项目。但是,当我 运行 项目时,它总是出错并在输出中给我 fatalError 行。我知道这是最后的初始化方法,但我不知道为什么。

这是否与我在某处丢失的超级初始化器有关?我是 swift 的新手,但如果我不将 class 我的 class 替换为 Object

,我可以让我的初始值设定项工作

您需要实施 init() 但 Xcode 不知道如何为您实施,因此它放入 fatalError("init() has not been implemented") 以提醒您实施它。

您可能只想调用 super。所以:

required init() {
    super.init()
}