swift - 使用多个必需的启动器初始化 Realm 对象类

标签 swift realm

我正在初始化 Realm 对象,当我尝试初始化类时出现以下错误: enter image description here 在我为 Realm 添加初始值设定项后,错误仍然存​​在。这是 xcode 的错误吗?

查看 swift-realm ios 项目的示例代码 here ,看起来我不需要调用所需的 Realm 。也许示例代码已过时。

编辑--- 这是代码的粘贴:

class AgencyR: Object {
    @objc dynamic var agency_id: String = ""
    @objc dynamic var agency_name: String = ""
    @objc dynamic var agency_timezone: String = ""
    @objc dynamic var agency_url: String = ""
    @objc dynamic var agency_lang: String = ""
    @objc dynamic var agency_phone: String = ""
    @objc dynamic var agency_fare_url: String = ""

    required init(realm:Realm, agency_id: String, agency_name: String, agency_timezone: String, agency_url: String, agency_lang: String, agency_phone: String, agency_fare_url: String) {
        self.init()
        self.agency_id = agency_id
        self.agency_name = agency_name
        self.agency_timezone = agency_timezone
        self.agency_url = agency_url
        self.agency_lang = agency_lang
        self.agency_phone = agency_phone
        self.agency_fare_url = agency_fare_url
    }

    override static func primaryKey() -> String? {
        return self.agency_id
    }
}

最佳答案

如果您想为 Object 子类创建一个指定的初始化器,您需要实现 Object 的所有必需的初始化器,因为编译器将无法合成那些给你的了。

您可以通过使您的自定义初始化器成为便利初始化器而不是指定初始化器来解决这个问题,这将允许您调用类的指定初始化器,而不必调用父类(super class)初始化器。您仍然可以根据需要标记便利初始值设定项。

您的 primaryKey 函数也有问题。由于该函数是类型函数,您无法从函数内部访问实例,因此您无法调用 self 来访问实例属性。但是,无论如何都不需要这样做,因为您只需要将要用作主键的变量名称作为 String 返回即可。

class A: Object {
    @objc dynamic var a = 1

    required convenience init(_ a:Int) {
        self.init()
        self.a = a
    }

    override static func primaryKey()->String?{
        return "a"
    }
}

关于swift - 使用多个必需的启动器初始化 Realm 对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868857/

相关文章:

swift - 通过条件限制 Realm Results 中的对象,以便观察结果

ios - 查询 Firebase 用户以检查联系人是否存在于数据库中

objective-c - 有一排大小相同的自定义 NSView

ios - 使用 Swift 从 iOS 应用程序上传文件到 Dropbox

ios - CGImage 没有属性/元数据 (CGImageProperties)

ios - Realm 生成模型

Swift:SimplePing 定时器不触发

ios - 使用 Xcode 8.2.1 和 Swift 3 编译 RealmSwift 时出错

swift - 在 swift 中的 try/catch 中何处放置延迟完成闭包

Swift 4 Realm Swift 对象