我正在尝试在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支持还是仍然没有?
Int
Optional
Optional Int
从Realm文档:
String,,NSDate和NSData属性可以使用标准Swift语法声明为可选或非可选。
String
NSDate
NSData
可选数字类型使用声明RealmOptional:
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)。
Float
Double
Bool
Int8
Int16
Int32
Int64
更新:
Realm 在Tweet中提到的Optional Ints 只是关于一个错误修复程序,该错误修复程序用于RealmOptional实现具有大小版本的Optional数值的方式Int
根据 Realm的说法,RealmOptional如果要在Realm对象中具有Optional数字值,则仍然必须使用。您不能像其他可选类型一样简单地使用它。
因此dynamic var reps: Int?将无法正常工作。
dynamic var reps: Int?