2017-04-22 15 views
-1
class ArrayTransform : ValueTransformer { 

    override func transformedValue(_ value: Any?) -> Any? { 
     return NSKeyedArchiver.archivedData(withRootObject:value) 
    } 

    override func reverseTransformedValue(_ value: Any?) -> Any? { 
     return NSKeyedUnarchiver.unarchiveObject(with: value as! Data) 
    } 

} 

上記のコードでは、オーバーライドできません。どうすればSwift 3.0に実装できますか?NSValueTransformerの名前がValueTransformerに変更されました

open class func allowsReverseTransformation() -> Bool 
open class func transformedValueClass() -> Swift.AnyClass 

次のスナップに記載されているオートコンプリートの問題。 enter image description here

+0

あなたのコードは正しくコンパイルされます。どうしたの? – matt

+0

私はtransformedValue:とreverseTransformedValue:に対してautoCompleteを取得することができましたが、前述のメソッドでは自動完了を提供しません。これらのメソッド名をValueTransformerからコピーして、オーバーライドエラーが発生します。 – andyPaul

+0

いいえ、それはできません。 "open"を "override"に変更し、実装を追加してください。 – matt

答えて

1

オートコンプリートは機能しません。オーバーライドです。

class ArrayTransform : ValueTransformer { 

    override class func transformedValueClass() -> Swift.AnyClass { 
     return NSData.self // or whatever 
    } 

    override class func allowsReverseTransformation() -> Bool { 
     return true // or whatever 
    } 

    // ... your other overrides go here ... 
} 
+0

これをdownvoteするのは無意味です。コードがコンパイルされて動作し、それが重要です。あなたがオートコンプリートの欠如が気に入らなければ、アップルにバグを報告してください。しかし、それについて戸惑うのはちょっとばかりです。 – matt

関連する問題