将 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()
}
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()
}