Swift Realm如何使用List处理动态调度<;T>;和现实主义<;T>;?
Realm依赖于动态调度来访问某些KVC机制的ObjectiveC运行时。模型属性应标记为Swift Realm如何使用List处理动态调度<;T>;和现实主义<;T>;?,swift,realm,Swift,Realm,Realm依赖于动态调度来访问某些KVC机制的ObjectiveC运行时。模型属性应标记为dynamic关键字,以使Realm对象使用的KVC能够用精确的值填充它们。所以您可以这样定义模型: class Car: Object { dynamic var color = "" dynamic var age = 0 } var car = Car() car["color"] = "white" car["age"] = 20 在某种程度上,您可以设置如下属性: class
dynamic
关键字,以使Realm
对象使用的KVC能够用精确的值填充它们。所以您可以这样定义模型:
class Car: Object {
dynamic var color = ""
dynamic var age = 0
}
var car = Car()
car["color"] = "white"
car["age"] = 20
在某种程度上,您可以设置如下属性:
class Car: Object {
dynamic var color = ""
dynamic var age = 0
}
var car = Car()
car["color"] = "white"
car["age"] = 20
这适用于所有基本类型,如Int
或String
,但不适用于泛型类和结构,因为它们不能在Objective C中表示。Realm使用其中两种类型:
将这些类型的属性添加到领域模型时,可以不使用dynamic关键字添加它们:
let cars = List<Car>
let registration = RealmOptional<String>
let cars=List
让注册=现实的
Realm使用什么机制来设置和读取这些类型的数据而不使用动态分派
更新1
经过一些检查,我发现Realm使用了一些Objective C运行时方法,如
class\u copyPropertyList()
和property\u getName()
来内省属性名称。我还没有发现的是,当您从领域中读取时,属性是如何用正确的数据填充的?“代码> > ObjtSturt< /Clult+C++框架> < P>通用属性,如<代码>列表或<代码> RealMeNeOp> <代码>不能从Objtovi.C中使用SWIFT的反射(<代码>镜像())>代码>检查。p>
(见附件)
然后直接访问他们的ivar
:
这些泛型属性是静态调度的。领域无法钩住访问这些内容。这就是为什么这些属性必须声明为
let
。Realm无法看到重新分配属性。这都是开源的。一个很好的起点可能是在Object
中实现subscript
。