Sorry, not tested, but I would write something like this, if I want to store [CNLabeledValueCNPhoneNumber] (ArrayCNLabeledValueCNPhoneNumber):
class PhoneNumbersToDataTransformer: NSSecureUnarchiveFromDataTransformer {
override class func allowsReverseTransformation() - Bool {
return true
}
override class func transformedValueClass() - AnyClass {
return NSArray.self //-
}
override class var allowedTopLevelClasses: [AnyClass] {
return [CNLabeledValueCNPhoneNumber.self, NSArray.self, CNPhoneNumber.self] //-
}
override func transformedValue(_ value: Any?) - Any? {
guard let data = value as? Data else {
fatalError("Wrong data type: value must be a Data object; received \(type(of: value))")
}
return super.transformedValue(data)
}
override func reverseTransformedValue(_ value: Any?) - Any? {
guard let phone = value as? [CNLabeledValueCNPhoneNumber] else {
fatalError("Wrong data type. Received \(type(of: value))")
}
return super.reverseTransformedValue(phone)
}
}
(In transformable attribute, the Custom Class needs to be a descendant of NSObject, in your case, it would be NSArray.)
Can you try and tell us what you get?
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags: