Необязательный Int в царстве

Я пытаюсь использовать опциональный Int в Realm, и я получаю старую ошибку, я думаю.

Код

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

Я понимаю, что в документации Realm говорится, что Int не поддерживается как Optional но https://twitter.com/realm/status/656621989583548416. Это из-за Twitter, поэтому я смущен. Поддерживаются ли Optional Int или нет?

Ответы

Ответ 1

Из документов Realm:

NSDate String, NSDate и NSData могут быть объявлены как необязательные или необязательные с использованием стандартного синтаксиса 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 поддерживает Int, Float, Double, Bool и все версии Int (Int8, Int16, Int32, Int64).

ОБНОВИТЬ:

Необязательные Инты, которые были упомянуты в Tweet от Realm, RealmOptional только исправления для RealmOptional способа реализации необязательного числового значения с размерами версий Int

По словам ребята из Realm, вам все равно придется использовать RealmOptional если вы хотите иметь дополнительные числовые значения в объекте Realm. Вы не можете просто использовать его, как и другие необязательные типы.

Итак, dynamic var reps: Int? не будет работать.