【问题标题】:transformedValueClass to return Array of type AnyObjecttransformValueClass 返回 AnyObject 类型的数组
【发布时间】:2015-09-13 02:26:27
【问题描述】:

我正在尝试实现名为ArrayValueTransformerNSValueTransformer 类,它旨在转换一个可以包含任何类型对象的数组,如下所示:

class ArrayValueTransformer : NSValueTransformer {
    override class func transformedValueClass() -> AnyClass {
        return Array<AnyObject>.self
    }
}

但是return语句给出了这个错误:

Type 'Array<AnyObject>' does not conform to protocol 'AnyObject'

【问题讨论】:

    标签: ios swift cocoa-touch core-data nsvaluetransformer


    【解决方案1】:

    AnyClassAnyObject.Type 的 typealiasAnyObject 仅表示 Swift 中的引用类型,例如类。 Swift 中的 Array 是值类型,不能用 AnyObject 表示,而应该使用 Any。您可以使用 NSArray,它是 Objective C 中的一个类类型,可以很好地桥接到 Swift Array。

    class ArrayValueTransformer : NSValueTransformer {
    
        override func transformedValue(value: AnyObject?) -> AnyObject? {
            guard let randomString = value as? String else { return nil }
            return split(randomString.characters, isSeparator: {$0 == " "}).map{ String($0) }
        }
    
        override func reverseTransformedValue(value: AnyObject?) -> AnyObject? {
            guard let randomArray = value as? [String] else { return nil }
            return randomArray.reduce(" ", combine: { "\($0!) \($1)" })
        }
    
        override class func transformedValueClass() -> AnyClass {
            return NSArray.self
        }
    }
    
    let transformer = ArrayValueTransformer()
    let transformedValue = transformer.transformedValue("J A C K")!
    
    let originalValue = transformer.reverseTransformedValue(transformedValue)
    

    顺便说一句,您可以使用 AnyObject.self。 transformdValuereverseTransformedValue 具有 AnyObject? 的返回类型,因此您需要以任何方式将其类型转换为您的类型。

    【讨论】:

      【解决方案2】:
       override class func transformedValueClass() -> AnyClass {
          return NSArray.self
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 2021-02-17
        • 2014-05-16
        相关资源
        最近更新 更多