retrolux icon indicating copy to clipboard operation
retrolux copied to clipboard

NestedTransformer.TypeOfProperty: Optionals Not Supported

Open cbh2000 opened this issue 6 years ago • 0 comments

They are actually supported, but it's hard to use and confusing.

I evaluated the code and realized why NestedTransformer's code appears to be stupid. tl;dr, delete the ? from typealias TypeOfProperty = NSNumber?.

    class OptionalAnyToOptionalNSNumberTransformer: NestedTransformer {
            typealias TypeOfData = Any?
            typealias TypeOfProperty = NSNumber? // Should be NSNumber, but most people will put in an optional.
            
            func setter(_ dataValue: Any?, type: Any.Type) throws -> NSNumber {
                if let number = dataValue as? NSNumber {
                    return number
                } else if let string = dataValue as? String, let integer = Int(string) {
                    return NSNumber(integerLiteral: integer)
                } else {
                    throw OptionalAnyToOptionalNSNumberTransformerError.unrecognizedNumber(given: dataValue)
                }
            }
            
            func getter(_ propertyValue: NSNumber) throws -> Any? {
                return propertyValue
            }
        }

cbh2000 avatar Jul 27 '17 16:07 cbh2000