From the Realm docs:
String
, NSDate
, and NSData
properties can be declared as optional or non-optional using the standard Swift syntax.
Optional numeric types are declared using 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
supports Int
, Float
, Double
, Bool
, and all of the sized versions of Int
(Int8
, Int16
, Int32
, Int64
).
UPDATE:
The Optional Ints that were mentioned in the Tweet by Realm were just regarding a bugfix for the RealmOptional
way of implementing an Optional numeric value with the sized versions of Int
According to the guys from Realm you still have to use RealmOptional
if you want to have Optional numeric values in a Realm object. You cannot simply use it like other Optional types.
So dynamic var reps: Int?
will not work.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…