小编asp*_*pro的帖子

快速反射会导致任何值都不可能产生零值

我正在尝试使用快速反射来检查对象中的更改,以便仅将更改后的属性发送到服务器。我的一些属性是可选的。要比较这些值,我需要解开它们,但是,当然,您只能解开实际值,而不是nil值。因此,我需要在比较它们之前检查其中一个值是否为nil。

在操场上,我尝试了以下方法:

import UIKit

class myClass
{

    var fieldOne:String?
    var fieldTwo:Int?
    var fieldThree:Float?

}

var oneMyClass = myClass()
oneMyClass.fieldOne = "blah"
oneMyClass.fieldThree = 3.5

var oneOtherClass = myClass()
oneOtherClass.fieldOne = "stuff"
oneOtherClass.fieldTwo = 3

let aMirror = Mirror(reflecting: oneMyClass)
let bMirror = Mirror(reflecting: oneOtherClass)

for thing in aMirror.children
{
    for thing2 in bMirror.children
    {
        if thing.label! == thing2.label!
        {
            print("property: \(thing.label!)")

            print("before: \(thing.value)")
            print("after: \(thing2.value)")
            print("")

            //let myTest = thing.value == nil ? "nil" : "not nil"
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

reflection swift

5
推荐指数
2
解决办法
992
查看次数

标签 统计

reflection ×1

swift ×1