我想要为NSCoding协议的encodeWithCoder(aCoder: NSCoder)方法写一个通用方法encodeDecorator(classObject:AnyObject,aCoder:NSCoder)
在实现过程中我碰到了一个问题,我没办法将Any类型的变量转化为AnyObject类型的变量,所以在encodeDecorator(classObject:AnyObject,aCoder:NSCoder)方法中,我无法把propertyValue变量传入aCoder.encodeObject(propertyValue, forKey: "k\(objectMirror.valueType)-\(propertyName)")方法,下面是代码。func encodeWithCoder(aCoder: NSCoder)
{
self.encodeDecorator(self, aCoder: aCoder)
}
func encodeDecorator(classObject:AnyObject,aCoder:NSCoder)
{
var objectMirror=reflect(classObject)
debugPrintln("object property count:\(objectMirror.count)")
for i in 0..<objectMirror.count
{
var propertyName=objectMirror[i].0
var propertyValue=objectMirror[i].1.value
if propertyName == "super" && i == 0
{
continue
}
debugPrintln("property name:\(propertyName)")
debugPrintln("property value:\(propertyValue)")
aCoder.encodeObject(propertyValue, forKey: "k\(objectMirror.valueType)-\(propertyName)")
}
}求大神解救
在实现过程中我碰到了一个问题,我没办法将Any类型的变量转化为AnyObject类型的变量,所以在encodeDecorator(classObject:AnyObject,aCoder:NSCoder)方法中,我无法把propertyValue变量传入aCoder.encodeObject(propertyValue, forKey: "k\(objectMirror.valueType)-\(propertyName)")方法,下面是代码。func encodeWithCoder(aCoder: NSCoder)
{
self.encodeDecorator(self, aCoder: aCoder)
}
func encodeDecorator(classObject:AnyObject,aCoder:NSCoder)
{
var objectMirror=reflect(classObject)
debugPrintln("object property count:\(objectMirror.count)")
for i in 0..<objectMirror.count
{
var propertyName=objectMirror[i].0
var propertyValue=objectMirror[i].1.value
if propertyName == "super" && i == 0
{
continue
}
debugPrintln("property name:\(propertyName)")
debugPrintln("property value:\(propertyValue)")
aCoder.encodeObject(propertyValue, forKey: "k\(objectMirror.valueType)-\(propertyName)")
}
}求大神解救
你可能需要避免使用 Any