Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Realm如何使用List处理动态调度<;T>;和现实主义<;T>;?_Swift_Realm - Fatal编程技术网

Swift Realm如何使用List处理动态调度<;T>;和现实主义<;T>;?

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

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 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