我正在尝试使用快速反射来检查对象中的更改,以便仅将更改后的属性发送到服务器。我的一些属性是可选的。要比较这些值,我需要解开它们,但是,当然,您只能解开实际值,而不是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)