swift - 如何存储选项

标签 swift realm

由于 Realm 不支持可选值,它们不是 Object 子类,因此我尝试将字符串包装到 StringObject 中:

final class StringObject: Object {
    dynamic var value: String = ""

    convenience init?(_ value: String?) {
        self.init()

        if let value = value {
            self.value = value
        } else {
            return nil
        }
    }
}

并像这样使用它:

final class Person: Object {
    dynamic var firstName: String = ""
    dynamic var lastName: StringObject? // can be optional
}

但是这个解决方案有一个令人讨厌的副作用:由于 StringOptional 值将存储在数据库中自己的表中,因此每次 StringObject 都会有无数重复值被 build 。我尝试将 StringObjectvalue 作为主键,但在创建 Person 对象时收到错误:

Can't set primary key property 'lastName' to existing value 'Doe'

这意味着 Realm 内部不会更新插入关系。

是否有更好的方法来存储选项?

最佳答案

我们实际上发布了 Realm 的测试版,它支持可选字符串和数据属性,并且希望很快会得到更广泛的发布!同时,您可以通过https://github.com/realm/realm-cocoa/issues/628#issuecomment-106952727试用测试版。 .

关于swift - 如何存储选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432075/

相关文章:

ios - 如何在 Swift 应用程序中使用带有框架的 Realm(与 Ca​​rthage 一起安装)?

ios - 执行 `await` 后的 Swift 任务和等待/异步队列?

ios - 使用 AVAudioEngine 录制音频文件

swift - 'RLMException',原因 : 'Opening Realm files of format version 11 is not supported by this version of Realm'

android - Realm 和 Looper 恶作剧

realm - Realm 数据库中 FlatList 中的数据显示问题

realm - Realm Studio 中此版本的 Realm 不支持打开格式版本 11 的 Realm 文件

ios - 音频录制和播放同时进行

声明私有(private) var 时出现 Swift 结构编译器错误

ios - 在 iOS 中以编程方式调用号码时显示联系人姓名