Class

ValueTransformer

An abstract class used to transform values from one representation to another. 一方の表現から他方へ値を変換するのに使われる抽象クラス。

Declaration 宣言

class ValueTransformer : NSObject

Overview 概要

You create a value transformer by subclassing ValueTransformer and overriding the necessary methods to provide the required custom transformation. You then register the value transformer using the setValueTransformer(_:forName:) method, so that other parts of your app can access it by name with init(forName:). あなたは、値変換器の作成を、ValueTransformerのサブクラスを作成して必要なメソッドをオーバーライドして望むあつらえの変換を提供することで行います。あなたはそれから値変換器をsetValueTransformer(_:forName:)メソッドを使って登録します、そうしてあなたのアプリの他の部分は名前によってそれにアクセスすることがinit(forName:)で可能です。

Use the transformedValue(_:) method to transform a value from one representation into another. If a value transformer designates that its transformation is reversible by returning true for allowsReverseTransformation(), you can also use the reverseTransformedValue(_:) to perform the transformation in reverse. For example, reversing the characters in a string is a reversible operation, whereas changing the characters in a string to be uppercase is a nonreversible operation. transformedValue(_:)メソッドを使ってある値を1つの表現から別のものへと変換してください。ある値変換器がそれの変換が元に戻せることをtrueallowsReverseTransformation()に対して返すことによって示すならば、あなたはまたreverseTransformedValue(_:)を使って逆での変換を実行してください。たとえば、ある文字列中の文字を逆にすることは元に戻せる操作です、その一方である文字列の中の文字をアップケースであるように変えることは元に戻せない操作です。

A value transformer can take inputs of one type and return a value of a different type. ある値変換器は、1つの型の入力を取り、そして異なる型の値を返すことが出来ます。 For example, a value transformer could take an NSImage or UIImage object and return an NSData object containing the PNG representation of that image.

Example Usage 使用例

The following example defines a new value transformer that takes an object and returns a string based on the object’s class type. This transformer isn't reversible because it doesn't make sense to transform a class name into an object. 以下の例は、ある新しい値変換器を定義します、それはあるオブジェクトを取り、そのオブジェクトのもつクラス型に基づいてある文字列を返します。この変換器は、可逆ではありません、なぜならそれはクラス名をオブジェクトへと変換することを理解できないからです。


class ClassNameTransformer: ValueTransformer {
    override class func transformedValueClass() -> AnyClass {
        return NSString.self
    }
    
    override class func allowsReverseTransformation() -> Bool {
        return false
    }
    
    override func transformedValue(_ value: Any?) -> Any? {
        return (value as AnyObject).className
    }
}


extension NSValueTransformerName {
    static let classNameTransformerName = NSValueTransformerName(rawValue: "ClassNameTransformer")
}


ValueTransformer.setValueTransformer(ClassNameTransformer(), forName: .classNameTransformerName)

Topics 話題

Using the Name-Based Registry 名前基盤のレジストリ(登録簿)を使う

Getting Information About a Transformer 変換器についての情報を取得する

Transforming Values 値を変換する

Relationships 関係

Inherits From 継承元

See Also 参照

Value Wrappers and Transformations 値のラッパーと変換