一尘不染

领域中的可选Int

swift

我正在尝试在Realm中使用Optional Int,并且出现了我认为的旧错误。

dynamic var reps: Int? = nil

错误

'Property cannot be marked dynamic because its type cannot be represented in Objective-C'

我正在将Realm 0.96.1与XCode 7.1一起使用

我的境界文档中了解它说,Int不支持作为Optional,但https://twitter.com/realm/status/656621989583548416。那是来自Realm
Twitter的,这就是为什么我感到困惑。被Optional Int支持还是仍然没有?


阅读 220

收藏
2020-07-07

共1个答案

一尘不染

从Realm文档:

String,,NSDateNSData属性可以使用标准Swift语法声明为可选或非可选。

可选数字类型使用声明RealmOptional

class Person: Object {
    // Optional string property, defaulting to nil
    dynamic var name: String? = nil

    // Optional int property, defaulting to nil
    // RealmOptional properties should always be declared with `let`,
    // as assigning to them directly will not work as desired
    let age = RealmOptional<Int>()
}

let realm = try! Realm()
try! realm.write() {
    var person = realm.create(Person.self, value: ["Jane", 27])
    // Reading from or modifying a `RealmOptional` is done via the `value` property
    person.age.value = 28
}

RealmOptional支持IntFloatDoubleBool,和所有的大小版本IntInt8Int16Int32Int64)。

更新:

Realm
Tweet中提到的Optional Ints
只是关于一个错误修复程序,该错误修复程序用于RealmOptional实现具有大小版本的Optional数值的方式Int

根据
Realm的说法RealmOptional如果要在Realm对象中具有Optional数字值,则仍然必须使用。您不能像其他可选类型一样简单地使用它。

因此dynamic var reps: Int?将无法正常工作。

2020-07-07