5
일반 버전의 NSCoding 구현을 만들고 새로운 버전의 응용 프로그램으로 인해 개체 유형이 변경되었을 때 디코딩에 문제가 있습니다.validateValue 메서드를 호출하는 방법
Swift에서 validateValue 메서드를 호출하는 데 문제가 있습니다. 함수 서명은 다음과 같습니다 참고로
func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey key: String, error outError: NSErrorPointer) -> Bool
는 애플의 문서는 여기에서 찾을 수 있습니다 :
NSCoding validateValue이
내가 만들려면 코드는 다음과 같습니다
public class func decodeObjectWithCoder(theObject:NSObject, aDecoder: NSCoder) {
for (key, value) in toDictionary(theObject) {
if aDecoder.containsValueForKey(key) {
let newValue: AnyObject? = aDecoder.decodeObjectForKey(key)
NSLog("set key \(key) with value \(newValue)")
var error:NSError?
var y:Bool = theObject.validateValue(newValue, forKey: key, error: &error)
if y {
theObject.setValue(newValue, forKey: key)
}
}
}
}
것은 내가 얻을 수 없다 .validateValue에 대한 호출이 올바른지 확인하십시오. 컴파일 오류가 계속 발생합니다. 어떻게 부를까요? EVReflection
업데이트 : toDictionary 기능에서 찾을 수 있습니다 난 그냥이 코드는 컴파일한다는 것을 발견 :
var ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?> = nil
var y:Bool = theObject.validateValue(ioValue, forKey: key, error: nil)
이 유형의 AnyObject이며 그 값을 의미? AutoreleasingUnsafeMutablePointer에 캐스팅 될 수 없습니다.