NSObject(NSKeyValueCoding)
継承:なし
従属:なし
フレームワーク:OS X 10.0 以降の Foundation。関連項目
NSKeyValueCoding の非公式のプロトコルは、アクセサメソッドまたはインスタンス変数の呼び出しを通じて直接的よりむしろ、名前(またはキー) によって間接的にオブジェクトのプロパティにアクセスできるメカニズムを定義します。したがって、オブジェクトのすべてのプロパティは、一貫した方法でアクセスできます。
オブジェクトの値にアクセスするための基本的なメソッドは、setValue:forKey: で、指定されたキーによって識別されるプロパティの値を設定し、また指定されたキーによって識別されるプロパティの値を返す valueForKey: です。デフォルトの実装では、通常オブジェクトによって実装されるアクセサメソッドを使用します(または必要があればインスタンス変数に直接アクセスするには)。
タスク
値の取得
- valueForKey:
指定されたキーによって識別されるプロパティの値を返します。
宣言
<< SWIFT >>
func valueForKey(_key: -> AnyObject?
<< OBJECTIVE-C >>
- (id) valueForKey:(NSString *)key
パラメーター
key 受信者のプロパティの1つの名前。
戻り値
key によって識別されるプロパティの値。
議論
valueForKey: の、検索パターンは、返す正しい値を見つけるために使用しますが、この事は キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.0 以降で利用可能。
以下も見よ
- valueForKeyPath:
指定されたキーパスによって識別される派生プロパティの値を返します。
宣言
<< SWIFT >>
func valueForKeyPath(_ keyPath: String) -> AnyObject?
<< OBJECTIVE-C >>
- (id)valueForKeyPath:(NSString *)keyPath
パラメーター
keyPath (一つ以上の関係を持つ) 形式 relationship.property のキーパス。例えば"department.name" または"department.manager.lastName"。
戻り値
keyPath によって識別される派生プロパティの値。
議論
デフォルトの実装では、valueForKey: を使用して、各関係の宛先オブジェクトを取得し、最終的なオブジェクトへの valueForKey: メッセージの結果を返します。
利用可能
OS X v10.0 以降で利用可能。
以下も見よ
– setValue:forKeyPath:
- dictionaryWithValuesForKeys:
指定した配列内の各キーによって識別されるプロパティ値を含む辞書を返します。
宣言
<< SWIFT >>
func dictionaryWithValuesForKeys(_ keys: [String]) -> [String : AnyObject]
<< OBJECTIVE-C >>
- (NSDictionary<NSString *,id> *)dictionaryWithValuesForKeys:(NSArray<NSString *> *)keys
パラメーター
keys 受信者のプロパティを識別する NSString オブジェクトを含む配列。
戻り値
keys として対応するプロパティ値である対応する値を持つ keys のプロパティ名を含む辞書。
議論
デフォルトの実装では、keys の各キーの valueForKey: を呼び出し、返された nil 値の辞書内の NSNull 値を代替します。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– setValuesForKeysWithDictionary:
- valueForUndefinedKey:
与えられたキーに対応するプロパティが見つからないとき、valueForKey: によって呼び出されます。
宣言
<< SWIFT >>
func valueForUndefinedKey(_ key: String) -> AnyObject?
<< OBJECTIVE-C >>
- (id)valueForUndefinedKey:(NSString *)key
パラメーター
key 受信者のプロパティの全ての名前と等しくない文字列。
議論
サブクラスは、未定義キーの代替値を返すようにこのメソッドをオーバーライドできます。デフォルトの実装は NSUndefinedKeyException を発生させます。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
- mutableArrayValueForKey:
与えられたキーで指定された順序付き対多の関係に読み書きアクセスを提供する可変(mutable) 配列のプロキシを返します。
宣言
<< SWIFT >>
func mutableArrayValueForKey(_ key: String) -> NSMutableArray
<< OBJECTIVE-C >>
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key
パラメーター
key 順番に並んだ対多の関係の名前。
戻り値
key で指定された順序に並んだ対多の関係への読み書きアクセスを提供する可変配列のプロキシ。
議論
可変配列に追加されたオブジェクトが、受信機に関連付けられ、変更可能な配列から削除されたオブジェクトが、無関係になります。デフォルトの実装は、valueForKey: と同じ単純なアクセサメソッドと配列アクセサメソッドを認識し、同じ直接インスタンス変数のアクセスポリシーに従いますが、valueForKey: が返す不変なコレクションの代わりに可変コレクション・プロキシ・オブジェクトを常に返します。
mutableArrayValueForKey: が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
- mutableArrayValueForKeyPath:
- mutableOrderedSetValueForKey:
- mutableArrayValueForKeyPath:
与えられたキーパスで指定された順序に並んだ対多の関係に読み書きアクセスを提供する可変配列を返します。
宣言
<< SWIFT >>
func mutableArrayValueForKeyPath(_ keyPath: String) -> NSMutableArray
<< OBJECTIVE-C >>
- (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath
パラメーター
keyPath 順番に並んだ対多の関係への、受信者への相対キーパス。
戻り値
keyPath で指定された順番に並んだ対多の関係に読み書きアクセスを提供する可変配列。
議論
詳細については、mutableArrayValueForKey: を参照してください。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– mutableArrayValueForKey:
– mutableOrderedSetValueForKeyPath:
- mutableSetValueForKey:
与えられたキーで指定された順不同の対多の関係に読み書きアクセスを提供する可変セットのプロキシを返します。
宣言
<< SWIFT >>
func mutableSetValueForKey(_ key: String) -> NSMutableSet
<< OBJECTIVE-C >>
- (NSMutableSet *)mutableSetValueForKey:(NSString *)key
パラメーター
key 順序不同の対多関係の名前。
戻り値
key で指定された順不同の対多関係に読み書きアクセスを提供する可変セット。
議論
可変セットプロキシに追加されたオブジェクトが受信者に関関係付けられ、可変セットプロキシから削除されたオブジェクトが、無関係になります。デフォルトの実装は、valueForKey: と同じ単純なアクセサメソッドとセットアクセサメソッドを認識し、また同じ直接インスタンス変数のアクセスポリシーに従いますが、valueForKey: が返す不変なコレクションの代わりに可変コレクションプロキシオブジェクトを常に返します。
mutableSetValueForKey: が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.4 以降で利用可能。
以下も見よ
– mutableOrderedSetValueForKey:
- mutableSetValueForKeyPath:
与えられたキーパスで指定された順不同の対多の関係に読み書きアクセスを提供する変更可能なセットを返します。
宣言
<< SWIFT >>
func mutableSetValueForKeyPath(_ keyPath: String) -> NSMutableSet
<< OBJECTIVE-C >>
- (NSMutableSet *)mutableSetValueForKeyPath:(NSString *)keyPath
パラメーター
keyPath 順不同の対多の関係への、受信者への相対のキーパス。
戻り値
keyPath で指定された順不同の対多の関係に読み書きアクセスを提供する可変セット。
議論
詳細については mutableSetValueForKey: を参照してください。
利用可能
OS X v10.4 以降で利用可能。
以下も見よ
– mutableArrayValueForKey:
– mutableOrderedSetValueForKeyPath:
- mutableOrderedSetValueForKey:
与えられたキーで指定された一意化する順序付きの対多の関係への読み書きアクセスを提供する変更可能な順序付きセットを返します。
宣言
<< SWIFT >>
func mutableOrderedSetValueForKey(_ key: String) -> NSMutableOrderedSet
<< OBJECTIVE-C >>
- (NSMutableOrderedSet *)mutableOrderedSetValueForKey:(NSString *)key
パラメーター
key 一意化する順序付きの対多の関係の名前。
戻り値
key で指定された一意化する対多の関係に読み書きアクセスを提供する可変順序付きのセット。
議論
可変のセットプロキシに追加されたオブジェクトは、受信者に関連付けられ、変更可能なセットから削除されたオブジェクトは、無関係になります。デフォルトの実装は、valueForKey: と同じ単純なアクセサメソッドとセットアクセサメソッドを認識し、同じ直接インスタンス変数のアクセスポリシーに従いますが、valueForKey: が返す不変なコレクションの代わりに可変コレクションプロキシオブジェクトを常に返します。
mutableOrderedSetValueForKey: が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.7 以降で利用可能。
- mutableOrderedSetValueForKeyPath:
与えられたキーパスで指定された一意化する順序付きの対多の関係への読み書きアクセスを提供する変更可能な順序付きセットを返します。
宣言
<< SWIFT >>
func mutableOrderedSetValueForKeyPath(_ keyPath: String) -> NSMutableOrderedSet
<< OBJECTIVE-C >>
- (NSMutableOrderedSet *)mutableOrderedSetValueForKeyPath:(NSString *)keyPath
パラメーター
keyPath 受信者への相対キーパスであり、セットで表現される一意化する順序付きの対多の関係です。
戻り値
keyPath で指定された一意化する対多の関係への読み書きアクセスを提供する可変の順序付きセット。
議論
詳細については、mutableOrderedSetValueForKey: を参照してください。
利用可能
OS X v10.7 以降で利用可能。
値の設定
- setValue:forKeyPath:
指定されたキーパスによって識別されるプロパティの値を与えられた値に設定します。
宣言
<< SWIFT >>
func setValue(_ value: AnyObject?,
forKeyPath keyPath: String)
<< OBJECTIVE-C >>
- (void)setValue:(id)value
forKeyPath:(NSString *)keyPath
パラメーター
value keyPath により識別されるプロパティの値。
keyPath (一つ以上の関係を持つ) 形式 relationship.property のキーパス。例えば、"department.name" または "department.manager.lastName"。
議論
このメソッドのデフォルト実装は、valueForKey: を使用して、各関係の宛先オブジェクトを取得し、最終的なオブジェクトに setValue:forKey: メッセージを送信します。
特別な考慮事項
このメソッドを使用したときに、宛先オブジェクトが値のアクセサを実装していない場合には、そのオブジェクトのデフォルトの動作は value をコピーしたり、代入するよりは value を保持する事です。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– valueForKeyPath:
- setValuesForKeysWithDictionary:
プロパティを識別するために、そのキーを使用して、与えられた辞書からの値で受信者のプロパティを設定します。
宣言
<< SWIFT >>
func setValuesForKeysWithDictionary(_ keyedValues: [String : AnyObject])
<< OBJECTIVE-C >>
- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *,
id> *)keyedValues
パラメーター
keyedValues 受信者のプロパティを識別するキーを持つ辞書。受信者のプロパティの値は、辞書内の対応する値に設定されています。
議論
デフォルトの実装は、キー値の各ペアのため setValue:forKey: を起動し、keyedValues 内の NSNull の代わりに nil で置き換えます。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– dictionaryWithValuesForKeys:
- setNilValueForKey:
スカラー値の nil 値が与えられた(int や float のような)時、setValue:forKey: によって呼び出されます。
宣言
<< SWIFT >>
func setNilValueForKey(_ key: String)
<< OBJECTIVE-C >>
- (void)setNilValueForKey:(NSString *)key
パラメーター
key 受信者の1つのプロパティの名前。
議論
サブクラスは、このような 0 か nil のためのセンチネル値を代入したり、setValue:forKey: を再び呼び出したり、または直接変数を設定したりして他の方法でリクエストを処理するために、このメソッドをオーバーライドできます。デフォルトの実装では、NSInvalidArgumentException を発生させます。
利用可能
OS X v10.3 以降で利用可能。
- setValue:forKey:
与えられたキーによって指定された受信者のプロパティを与えられた値に設定します。
宣言
<< SWIFT >>
func setValue(_ value: AnyObject?,
forKey key: String)
<< OBJECTIVE-C >>
- (void)setValue:(id)value
forKey:(NSString *)key
パラメーター
value key によって識別されるプロパティの値。
key 受信者の1つのプロパティの名前。
議論
key が1対1の関係を識別した場合、受信者に value で指定されたオブジェクトを関連付け、以前に関連するオブジェクトがあった場合、それを無関係にします。コレクションオブジェクトと対多の関係を識別する key が与えられると、任意のがあった場合は、受信者に、コレクションに含まれるオブジェクトを関連付け、以前関連していたオブジェクトがあれば無関係にします。
setValue:forKey が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
インスタンス変数に直接アクセスされた場合に、参照カウント環境では、value が保持されます。
利用可能
OS X v10.3 以降で利用可能。
- setValue:forUndefinedKey:
与えられたキーのためのプロパティを見つけられないとき、setValue:forKey: によって呼び出されます。
宣言
<< SWIFT >>
func setValue(_ value: AnyObject?,
forUndefinedKey key: String)
<< OBJECTIVE-C >>
- (void)setValue:(id)value
forUndefinedKey:(NSString *)key
パラメーター
value key で識別されるキーの値。
key 受信者のプロパティの全ての名前と等しくない文字列。
議論
サブクラスは、他の何らかの方法で要求を処理するために、このメソッドをオーバーライドできます。デフォルトの実装は NSUndefinedKeyException を発生させます。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– valueForUndefinedKey:
デフォルトの動作の変更
+ accessInstanceVariablesDirectly
キー値コーディングメソッドが、プロパティ用のアクセッサメソッドを見つけていないものの上に直接対応するインスタンス変数にアクセスする必要があるかどうかを示すブール値を返します。
宣言
<< SWIFT >>
class func accessInstanceVariablesDirectly() -> Bool
<< OBJECTIVE-C >>
+ (BOOL)accessInstanceVariablesDirectly
戻り値
キー値コーディングメソッドが、プロパティ用のアクセサメソッドを見つけていないもの上に直接対応するインスタンス変数にアクセスする必要がある場合は YES、それ以外は NO。
議論
デフォルトでは YES を返します。サブクラスは、NO を返すためにオーバーライドでき、その場合には、キー値コーディングメソッドはインスタンス変数にアクセスしないでしょう。
利用可能
OS X v10.0 以降で利用可能。
検証
- validateValue:forKey:error:
与えられたポインタで指定された値が、与えられたキーによって識別されるプロパティのために有効かどうかを示すブール値を返します。
宣言
<< SWIFT >>
func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>,
forKey inKey: String) throws
<< OBJECTIVE-C >>
- (BOOL)validateValue:(inout id _Nullable *)ioValue
forKey:(NSString *)key
error:(out NSError * _Nullable *)outError
パラメーター
ioValue key によって識別されるプロパティの新しい値へのポインタ。このメソッドは、それを有効にするための値を変更または置き換えることができます。
key 受信者の1つのプロパティの名前。キーは、属性または 1対1 の関係を指定する必要があります。
outError 検証が必要であり、ioValue が有効な値ではない理由を説明する NSError オブジェクトを戻り値が含む時に ioValue が、有効な値に変換されていない場合。
戻り値
* ioValue がkey によって識別されるプロパティの有効な値である場合、またはメソッドが * ioValue が、それを有効にするために値を変更できる場合、YES。それ以外の場合は NO。
議論
このメソッドのデフォルト実装は、その名前がパターン validate<Key>:error: と一致する検証メソッド用の受信者のクラスを検索します。このようなメソッドが発見された場合、それが呼び出され、その結果が返されます。そのような方法が見つからない場合は、YES を返します。
メッセージの送信者は、ioValue または outError を解放する責任を与えられることは決してありません。
詳細については、キー値の検証 を参照してください。
Swift でのエラーの処理
Swiftでは、このメソッドは void を返し、それが失敗した場合にはエラーを throws することを示すために throws キーワードでマークされています。
try 式でこのメソッドを呼び出して、do 文の catch 節でエラーを処理します。この事は Swift プログラミング言語(Swift 2.2) の エラー処理 と、ココアと Objective-C でのスウィフトの使い方(Swift 2.2) の エラー処理 で説明しました。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– validateValue:forKeyPath:error:
- validateValue:forKeyPath:error:
与えられたポインタで指定された値が受信者に与えられたキーの相対パスで有効かどうかを示すブール値を返します。
宣言
<< SWIFT >>
func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>,
forKeyPath inKeyPath: String) throws
<< OBJECTIVE-C >>
- (BOOL)validateValue:(inout id _Nullable *)ioValue
forKeyPath:(NSString *)key
error:(out NSError * _Nullable *)outError
パラメーター
ioValue keyPath によって識別されるプロパティの新しい値へのポインタ。このメソッドは、それを有効にするために値を変更または置き換えることができます。
key 受信者の1つのプロパティの名前。キーパスは、属性または 1対1 の関係を指定する必要があります。キーパスは、(1つ以上の関係で) 形式 relationship.property を持っています。例えば"department.name" または"department.manager.lastName"。
outError 検証が必要であり、ioValue が有効な値ではない理由を説明する NSError オブジェクトを含む値を戻す時に ioValue は、有効な値に変換されていない場合。
議論
デフォルトの実装では、valueForKey: を使用して、各関係の宛先オブジェクトを取得し、最終的なオブジェクトへの validateValue:forKey:error: のメッセージを送った結果を返します。
Swift でのエラーの処理
Swiftでは、このメソッドは void を返し、それが失敗した場合にはエラーを throws することを示すために throws キーワードでマークされています。
try 式でこのメソッドを呼び出して、do 文の catch 節でエラーを処理します。この事は Swift プログラミング言語(Swift 2.2) の エラー処理 と、ココアと Objective-C でのスウィフトの使い方(Swift 2.2) の エラー処理 で説明しました。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
旧式のメソッド
+ useStoredAccessor
(OS X v10.4)
保存されている値メソッド storedValueForKey: と takeStoredValue:forKey: がパブリックアクセッサに優先して、プライベートアクセサメソッドを使用する必要があれば、YES を返します。
旧式の文
このメソッドには、何も直接の交換がありませんが、accessInstanceVariablesDirectly を参照してください。
宣言
<< OBJECTIVE-C >>
+ (BOOL)useStoredAccessor
議論
NO を返すと、保存された値メソッドに同じアクセサメソッドまたはインスタンス変数が対応する基本のキー値コーディングメソッド(valueForKey: と takeValue:forKey:) の検索順序を使用するようになります。デフォルトの実装では、YES を返します。
アプリケーションは storedValueForKey: と takeStoredValue: の代わりに valueForKey と setValue:forKey: メソッドを使用する必要があります。
利用可能
OS X v10.0 以降で利用可能。
OS X v10.4 で旧式となりました。
- handleQueryWithUnboundKey:
(OS X v10.3)
key に対応するプロパティが見つからないとき、valueForKey: によって呼び出されます。
旧式の文
代わりに valueForUndefinedKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (id)handleQueryWithUnboundKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- handleTakeValue:forUnboundKey:
(OS X v10.3)
key にバインディングしているプロパティを見つけられないとき、takeValue:forKey: によって呼び出されます。
旧式の文
代わりに setValue:forUndefinedKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)handleTakeValue:(id)value
forUnboundKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- storedValueForKey:
(OS X v10.4)
与えられたキーによって識別されるプロパティを返します。
旧式の文
NSManagedObject クラスを使用している場合は、代わりに primitiveValueForKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (id)storedValueForKey:(NSString *)key
議論
値がオブジェクトの倉庫に格納するために取得される場合は、この方法を使用するか(一般的に、この倉庫は、最終的にデータベース内にあります)、スナップショットに含めます。デフォルトの実装では、valueForKey: の実装に似てますが、それは別のメソッド/インスタンス変数の検索順序で key を解決します。
- key(アンダーバーが先行するメソッド) に基づいて、プライベートアクセッサメソッドを検索します。たとえば、"lastName" の key で、storedValueForKey: は _getLastName または _lastName という名前のメソッドを探します。
- プライベートアクセッサが見つからない場合は、key に基づいてインスタンス変数を検索し、直接その値を返します。たとえば、"lastName" の key で、storedValueForKey: は _lastName または lastName という名前のインスタンス変数を探します。
- プライベートアクセッサやインスタンス変数のいずれもが見つからなかった場合、storedValueForKey: はパブリックアクセッサメソッドを key に基づき検索します。key "lastName" の場合、これは getLastName か lastName でしょう。
- key が不明な場合は、storedValueForKey: は handleTakeValue:forUnboundKey: を呼び出します。
この別の検索順序は、public API を介して値を返す前に行われたバイパス処理をオブジェクトに可能にします。しかし、valueForKey: の検索順序を常に使用したい場合は、クラスメソッド useStoredAccessor が NO を返すように実装できます。そして、valueForKey: と同様、accessInstanceVariablesDirectly クラスメソッドとインスタンス変数の直接アクセスを防ぐことができます。
利用可能
OS X v10.0 以降で利用可能。
OS X v10.4 で旧式となりました。
- takeStoredValue:forKey:
(OS X v10.4)
与えられたキーによって識別されるプロパティの値を設定します。
旧式の文
NSManagedObject クラスを使用している場合は、代わりに setPrimitiveValue:forKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeStoredValue:(id)value
forKey:(NSString *)key
議論
このメソッドは、オブジェクトの倉庫からの値を持つ受信者を初期化するために使用するか(一般的に、この倉庫は、最終的にデータベースからあります)、スナップショットから値を復元します。デフォルトの実装は takeValue:forKey: と同様ですが、それは別のメソッド/インスタンス変数の検索順序で key を解決します。
- key(アンダーバーが先行するメソッド) に基づいて、プライベートアクセッサメソッドを検索します。たとえば、"lastName" の key で、takeStoredValue:forKey: は _setLastName という名前のメソッドを探します。
- プライベートアクセッサが見つからない場合は、key に基づいてインスタンス変数を検索し、直接その value を設定します。たとえば、"lastName" の key で、takeStoredValue:forKey: は _lastName または lastName という名前のインスタンス変数を探します。
- プライベートアクセッサやインスタンス変数のいずれもが見つからなかった場合、takeStoredValue:forKey: は key に基づいてパブリックアクセッサメソッドを検索します。"lastName" の key の場合、これは setLastName になるでしょう。
- key が不明な場合、takeStoredValue:forKey: は handleTakeValue:forUnboundKey: を呼び出します。
この別の検索順序は、public API を介して値を設定する前に行われたバイパス処理をオブジェクトに可能にします。しかし、takeValue:forKey: の検索順序を常に使用したい場合は、クラスメソッド useStoredAccessor が NO を返すように実装できます。そして、valueForKey: と同様、accessInstanceVariablesDirectly クラスメソッドとインスタンス変数の直接アクセスを防ぐことができます。
利用可能
OS X v10.0 以降で利用可能。
OS X v10.4 で旧式となりました。
- takeValuesFromDictionary:
(OS X v10.3)
プロパティを識別するために、そのキーを使用して、与えられた辞書からの値で受信者のプロパティを設定します。
旧式の文
代わりに setValuesForKeysWithDictionary: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeValuesFromDictionary:(NSDictionary *)properties
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- takeValue:forKeyPath:
(OS X v10.3)
keyPath によって識別されるプロパティの値を value に設定します。
旧式の文
代わりに setValue:forKeyPath: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeValue:(id)value
forKeyPath:(NSString *)keyPath
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- takeValue:forKey:
(OS X v10.3)
key によって識別されるプロパティの値を value に設定します。
旧式の文
代わりに setValue:forKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeValue:(id)value
forKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- unableToSetNilForKey:
(OS X v10.3)
key が、スカラー属性によって表されている場合に呼び出されます。
旧式の文
代わりに setNilValueForKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)unableToSetNilForKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- valuesForKeys:
(OS X v10.3)
対応するプロパティ値である対応する値で、keys 内のプロパティ名をキーとして含む辞書を返します。
旧式の文
代わりに dictionaryWithValuesForKeys: を使用します。
宣言
<< OBJECTIVE-C >>
- (NSDictionary *)valuesForKeys:(NSArray *)keys
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
定数
キー値コーディング例外名
この定数は、キー値コーディング操作が失敗したときに発生する例外の名前を定義します。
宣言
<< SWIFT >>
let NSUndefinedKeyException: String
<< OBJECTIVE-C >>
extern NSString *NSUndefinedKeyException;
定数
NSUndefinedKeyException
キー値コーディング操作が失敗した場合に発生します。userInfo キーは、NSUndefinedKeyException userInfo keys で説明しました。
OS X v10.3 以降で利用可能。
NSUndefinedKeyException userInfo Keys
これらの定数は NSUndefinedKeyException userInfo 辞書へのキーです。
宣言
<< OBJECTIVE-C >>
extern NSString *NSTargetObjectUserInfoKey;
extern NSString *NSUnknownUserInfoKey;
定数
NSTargetObjectUserInfoKey
オブジェクトの上でキー値コーディング操作に失敗したそのオブジェクト。
NSUnknownUserInfoKey
キー値コーディング操作が失敗したキー。
議論
追加情報は キー値コーディング例外名 を参照してください。
配列演算子
これらの定数は、利用可能な配列演算子を定義します。詳細については、セットと配列演算子 を参照してください。
宣言
<< SWIFT >>
let NSAverageKeyValueOperator: String
let NSCountKeyValueOperator: String
let NSDistinctUnionOfArraysKeyValueOperator: String
let NSDistinctUnionOfObjectsKeyValueOperator: String
let NSDistinctUnionOfSetsKeyValueOperator: String
let NSMaximumKeyValueOperator: String
let NSMinimumKeyValueOperator: String
let NSSumKeyValueOperator: String
let NSUnionOfArraysKeyValueOperator: String
let NSUnionOfObjectsKeyValueOperator: String
let NSUnionOfSetsKeyValueOperator: String
<< OBJECTIVE-C >>
NSString *const NSAverageKeyValueOperator;
NSString *const NSCountKeyValueOperator;
NSString *const NSDistinctUnionOfArraysKeyValueOperator;
NSString *const NSDistinctUnionOfObjectsKeyValueOperator;
NSString *const NSDistinctUnionOfSetsKeyValueOperator;
NSString *const NSMaximumKeyValueOperator;
NSString *const NSMinimumKeyValueOperator;
NSString *const NSSumKeyValueOperator;
NSString *const NSUnionOfArraysKeyValueOperator;
NSString *const NSUnionOfObjectsKeyValueOperator;
NSString *const NSUnionOfSetsKeyValueOperator;
定数
NSAverageKeyValueOperator
@avg 配列演算子。
OS X v10.4 以降で利用可能。
NSCountKeyValueOperator
@acount 配列演算子。
OS X v10.4 以降で利用可能。
NSDistinctUnionOfArraysKeyValueOperator
@distinctUnionOfArrays 配列演算子。
OS X v10.4 以降で利用可能。
NSDistinctUnionOfObjectsKeyValueOperator
@distinctUnionOfObjects 配列演算子。
OS X v10.4 以降で利用可能。
NSDistinctUnionOfSetsKeyValueOperator
@distinctUnionOfSets 配列演算子。
OS X v10.4 以降で利用可能。
NSMaximumKeyValueOperator
@max 配列演算子。
OS X v10.4 以降で利用可能。
NSMinimumKeyValueOperator
@Min 配列演算子。
OS X v10.4 以降で利用可能。
NSSumKeyValueOperator
@sum 配列演算子。
OS X v10.4 以降で利用可能。
NSUnionOfArraysKeyValueOperator
@unionOfArrays 配列演算子。
OS X v10.4 以降で利用可能。
NSUnionOfObjectsKeyValueOperator
@unionOfObjects 配列演算子。
OS X v10.4 以降で利用可能。
NSUnionOfSetsKeyValueOperator
@unionOfSets 配列演算子。
OS X v10.4 以降で利用可能。
利用可能
OS X v10.4 以降で利用可能。
次
目次
Xcode の新機能
NSObject(NSKeyValueCoding)
概観
タスク
値の取得
valueForKey:
valueForKeyPath:
dictionaryWithValuesForKeys:
valueForUndefinedKey:
mutableArrayValueForKey:
mutableArrayValueForKeyPath:
mutableSetValueForKey:
mutableSetValueForKeyPath:
mutableOrderedSetValueForKey:
mutableOrderedSetValueForKeyPath:
値の設定
setValue:forKeyPath:
setValuesForKeysWithDictionary:
setNilValueForKey:
setValue:forKey:
setValue:forUndefinedKey:
デフォルトの動作の変更
accessInstanceVariablesDirectly
検証
validateValue:forKey:error:
validateValue:forKeyPath:error:
旧式のメソッド
useStoredAccessor
handleQueryWithUnboundKey:
handleTakeValue:forUnboundKey:
storedValueForKey:
takeStoredValue:forKey:
takeValuesFromDictionary:
takeValue:forKeyPath:
takeValue:forKey:
unableToSetNilForKey:
valuesForKeys:
定数
キー値コーディング例外名
NSUndefinedKeyException userInfo Keys
配列演算子
文書改訂履歴
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
継承:なし
従属:なし
フレームワーク:OS X 10.0 以降の Foundation。関連項目
NSKeyValueCoding の非公式のプロトコルは、アクセサメソッドまたはインスタンス変数の呼び出しを通じて直接的よりむしろ、名前(またはキー) によって間接的にオブジェクトのプロパティにアクセスできるメカニズムを定義します。したがって、オブジェクトのすべてのプロパティは、一貫した方法でアクセスできます。
オブジェクトの値にアクセスするための基本的なメソッドは、setValue:forKey: で、指定されたキーによって識別されるプロパティの値を設定し、また指定されたキーによって識別されるプロパティの値を返す valueForKey: です。デフォルトの実装では、通常オブジェクトによって実装されるアクセサメソッドを使用します(または必要があればインスタンス変数に直接アクセスするには)。
タスク
値の取得
- valueForKey:
指定されたキーによって識別されるプロパティの値を返します。
宣言
<< SWIFT >>
func valueForKey(_key: -> AnyObject?
<< OBJECTIVE-C >>
- (id) valueForKey:(NSString *)key
パラメーター
key | 受信者のプロパティの1つの名前。 |
戻り値
key によって識別されるプロパティの値。
議論
valueForKey: の、検索パターンは、返す正しい値を見つけるために使用しますが、この事は キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.0 以降で利用可能。
以下も見よ
- valueForKeyPath:
指定されたキーパスによって識別される派生プロパティの値を返します。
宣言
<< SWIFT >>
func valueForKeyPath(_ keyPath: String) -> AnyObject?
<< OBJECTIVE-C >>
- (id)valueForKeyPath:(NSString *)keyPath
パラメーター
keyPath | (一つ以上の関係を持つ) 形式 relationship.property のキーパス。例えば"department.name" または"department.manager.lastName"。 |
戻り値
keyPath によって識別される派生プロパティの値。
議論
デフォルトの実装では、valueForKey: を使用して、各関係の宛先オブジェクトを取得し、最終的なオブジェクトへの valueForKey: メッセージの結果を返します。
利用可能
OS X v10.0 以降で利用可能。
以下も見よ
– setValue:forKeyPath:- dictionaryWithValuesForKeys:
指定した配列内の各キーによって識別されるプロパティ値を含む辞書を返します。
宣言
<< SWIFT >>
func dictionaryWithValuesForKeys(_ keys: [String]) -> [String : AnyObject]
<< OBJECTIVE-C >>
- (NSDictionary<NSString *,id> *)dictionaryWithValuesForKeys:(NSArray<NSString *> *)keys
パラメーター
keys | 受信者のプロパティを識別する NSString オブジェクトを含む配列。 |
戻り値
keys として対応するプロパティ値である対応する値を持つ keys のプロパティ名を含む辞書。
議論
デフォルトの実装では、keys の各キーの valueForKey: を呼び出し、返された nil 値の辞書内の NSNull 値を代替します。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– setValuesForKeysWithDictionary:
- valueForUndefinedKey:
与えられたキーに対応するプロパティが見つからないとき、valueForKey: によって呼び出されます。
宣言
<< SWIFT >>
func valueForUndefinedKey(_ key: String) -> AnyObject?
<< OBJECTIVE-C >>
- (id)valueForUndefinedKey:(NSString *)key
パラメーター
key | 受信者のプロパティの全ての名前と等しくない文字列。 |
議論
サブクラスは、未定義キーの代替値を返すようにこのメソッドをオーバーライドできます。デフォルトの実装は NSUndefinedKeyException を発生させます。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
- mutableArrayValueForKey:
与えられたキーで指定された順序付き対多の関係に読み書きアクセスを提供する可変(mutable) 配列のプロキシを返します。
宣言
<< SWIFT >>
func mutableArrayValueForKey(_ key: String) -> NSMutableArray
<< OBJECTIVE-C >>
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key
パラメーター
key | 順番に並んだ対多の関係の名前。 |
戻り値
key で指定された順序に並んだ対多の関係への読み書きアクセスを提供する可変配列のプロキシ。
議論
可変配列に追加されたオブジェクトが、受信機に関連付けられ、変更可能な配列から削除されたオブジェクトが、無関係になります。デフォルトの実装は、valueForKey: と同じ単純なアクセサメソッドと配列アクセサメソッドを認識し、同じ直接インスタンス変数のアクセスポリシーに従いますが、valueForKey: が返す不変なコレクションの代わりに可変コレクション・プロキシ・オブジェクトを常に返します。
mutableArrayValueForKey: が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
- mutableArrayValueForKeyPath:- mutableOrderedSetValueForKey:
- mutableArrayValueForKeyPath:
与えられたキーパスで指定された順序に並んだ対多の関係に読み書きアクセスを提供する可変配列を返します。
宣言
<< SWIFT >>
func mutableArrayValueForKeyPath(_ keyPath: String) -> NSMutableArray
<< OBJECTIVE-C >>
- (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath
パラメーター
keyPath | 順番に並んだ対多の関係への、受信者への相対キーパス。 |
戻り値
keyPath で指定された順番に並んだ対多の関係に読み書きアクセスを提供する可変配列。
議論
詳細については、mutableArrayValueForKey: を参照してください。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– mutableArrayValueForKey:– mutableOrderedSetValueForKeyPath:
- mutableSetValueForKey:
与えられたキーで指定された順不同の対多の関係に読み書きアクセスを提供する可変セットのプロキシを返します。
宣言
<< SWIFT >>
func mutableSetValueForKey(_ key: String) -> NSMutableSet
<< OBJECTIVE-C >>
- (NSMutableSet *)mutableSetValueForKey:(NSString *)key
パラメーター
key | 順序不同の対多関係の名前。 |
戻り値
key で指定された順不同の対多関係に読み書きアクセスを提供する可変セット。
議論
可変セットプロキシに追加されたオブジェクトが受信者に関関係付けられ、可変セットプロキシから削除されたオブジェクトが、無関係になります。デフォルトの実装は、valueForKey: と同じ単純なアクセサメソッドとセットアクセサメソッドを認識し、また同じ直接インスタンス変数のアクセスポリシーに従いますが、valueForKey: が返す不変なコレクションの代わりに可変コレクションプロキシオブジェクトを常に返します。
mutableSetValueForKey: が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.4 以降で利用可能。
以下も見よ
– mutableOrderedSetValueForKey:
- mutableSetValueForKeyPath:
与えられたキーパスで指定された順不同の対多の関係に読み書きアクセスを提供する変更可能なセットを返します。
宣言
<< SWIFT >>
func mutableSetValueForKeyPath(_ keyPath: String) -> NSMutableSet
<< OBJECTIVE-C >>
- (NSMutableSet *)mutableSetValueForKeyPath:(NSString *)keyPath
パラメーター
keyPath | 順不同の対多の関係への、受信者への相対のキーパス。 |
戻り値
keyPath で指定された順不同の対多の関係に読み書きアクセスを提供する可変セット。
議論
詳細については mutableSetValueForKey: を参照してください。
利用可能
OS X v10.4 以降で利用可能。
以下も見よ
– mutableArrayValueForKey:– mutableOrderedSetValueForKeyPath:
- mutableOrderedSetValueForKey:
与えられたキーで指定された一意化する順序付きの対多の関係への読み書きアクセスを提供する変更可能な順序付きセットを返します。
宣言
<< SWIFT >>
func mutableOrderedSetValueForKey(_ key: String) -> NSMutableOrderedSet
<< OBJECTIVE-C >>
- (NSMutableOrderedSet *)mutableOrderedSetValueForKey:(NSString *)key
パラメーター
key | 一意化する順序付きの対多の関係の名前。 |
戻り値
key で指定された一意化する対多の関係に読み書きアクセスを提供する可変順序付きのセット。
議論
可変のセットプロキシに追加されたオブジェクトは、受信者に関連付けられ、変更可能なセットから削除されたオブジェクトは、無関係になります。デフォルトの実装は、valueForKey: と同じ単純なアクセサメソッドとセットアクセサメソッドを認識し、同じ直接インスタンス変数のアクセスポリシーに従いますが、valueForKey: が返す不変なコレクションの代わりに可変コレクションプロキシオブジェクトを常に返します。
mutableOrderedSetValueForKey: が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセサ検索の実装の詳細 で説明しました。
利用可能
OS X v10.7 以降で利用可能。
- mutableOrderedSetValueForKeyPath:
与えられたキーパスで指定された一意化する順序付きの対多の関係への読み書きアクセスを提供する変更可能な順序付きセットを返します。
宣言
<< SWIFT >>
func mutableOrderedSetValueForKeyPath(_ keyPath: String) -> NSMutableOrderedSet
<< OBJECTIVE-C >>
- (NSMutableOrderedSet *)mutableOrderedSetValueForKeyPath:(NSString *)keyPath
パラメーター
keyPath | 受信者への相対キーパスであり、セットで表現される一意化する順序付きの対多の関係です。 |
戻り値
keyPath で指定された一意化する対多の関係への読み書きアクセスを提供する可変の順序付きセット。
議論
詳細については、mutableOrderedSetValueForKey: を参照してください。
利用可能
OS X v10.7 以降で利用可能。
値の設定
- setValue:forKeyPath:
指定されたキーパスによって識別されるプロパティの値を与えられた値に設定します。
宣言
<< SWIFT >>
func setValue(_ value: AnyObject?, forKeyPath keyPath: String)
<< OBJECTIVE-C >>
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath
パラメーター
value | keyPath により識別されるプロパティの値。 |
keyPath | (一つ以上の関係を持つ) 形式 relationship.property のキーパス。例えば、"department.name" または "department.manager.lastName"。 |
議論
このメソッドのデフォルト実装は、valueForKey: を使用して、各関係の宛先オブジェクトを取得し、最終的なオブジェクトに setValue:forKey: メッセージを送信します。
特別な考慮事項
このメソッドを使用したときに、宛先オブジェクトが値のアクセサを実装していない場合には、そのオブジェクトのデフォルトの動作は value をコピーしたり、代入するよりは value を保持する事です。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– valueForKeyPath:- setValuesForKeysWithDictionary:
プロパティを識別するために、そのキーを使用して、与えられた辞書からの値で受信者のプロパティを設定します。
宣言
<< SWIFT >>
func setValuesForKeysWithDictionary(_ keyedValues: [String : AnyObject])
<< OBJECTIVE-C >>
- (void)setValuesForKeysWithDictionary:(NSDictionary<NSString *, id> *)keyedValues
パラメーター
keyedValues | 受信者のプロパティを識別するキーを持つ辞書。受信者のプロパティの値は、辞書内の対応する値に設定されています。 |
議論
デフォルトの実装は、キー値の各ペアのため setValue:forKey: を起動し、keyedValues 内の NSNull の代わりに nil で置き換えます。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– dictionaryWithValuesForKeys:- setNilValueForKey:
スカラー値の nil 値が与えられた(int や float のような)時、setValue:forKey: によって呼び出されます。
宣言
<< SWIFT >>
func setNilValueForKey(_ key: String)
<< OBJECTIVE-C >>
- (void)setNilValueForKey:(NSString *)key
パラメーター
key | 受信者の1つのプロパティの名前。 |
議論
サブクラスは、このような 0 か nil のためのセンチネル値を代入したり、setValue:forKey: を再び呼び出したり、または直接変数を設定したりして他の方法でリクエストを処理するために、このメソッドをオーバーライドできます。デフォルトの実装では、NSInvalidArgumentException を発生させます。
利用可能
OS X v10.3 以降で利用可能。
- setValue:forKey:
与えられたキーによって指定された受信者のプロパティを与えられた値に設定します。
宣言
<< SWIFT >>
func setValue(_ value: AnyObject?, forKey key: String)
<< OBJECTIVE-C >>
- (void)setValue:(id)value forKey:(NSString *)key
パラメーター
value | key によって識別されるプロパティの値。 |
key | 受信者の1つのプロパティの名前。 |
議論
key が1対1の関係を識別した場合、受信者に value で指定されたオブジェクトを関連付け、以前に関連するオブジェクトがあった場合、それを無関係にします。コレクションオブジェクトと対多の関係を識別する key が与えられると、任意のがあった場合は、受信者に、コレクションに含まれるオブジェクトを関連付け、以前関連していたオブジェクトがあれば無関係にします。
setValue:forKey が使用する検索パターンは、キー値コーディングプログラミングガイド の アクセッサ検索の実装の詳細 で説明しました。
インスタンス変数に直接アクセスされた場合に、参照カウント環境では、value が保持されます。
利用可能
OS X v10.3 以降で利用可能。
- setValue:forUndefinedKey:
与えられたキーのためのプロパティを見つけられないとき、setValue:forKey: によって呼び出されます。
宣言
<< SWIFT >>
func setValue(_ value: AnyObject?, forUndefinedKey key: String)
<< OBJECTIVE-C >>
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
パラメーター
value | key で識別されるキーの値。 |
key | 受信者のプロパティの全ての名前と等しくない文字列。 |
議論
サブクラスは、他の何らかの方法で要求を処理するために、このメソッドをオーバーライドできます。デフォルトの実装は NSUndefinedKeyException を発生させます。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– valueForUndefinedKey:デフォルトの動作の変更
+ accessInstanceVariablesDirectly
キー値コーディングメソッドが、プロパティ用のアクセッサメソッドを見つけていないものの上に直接対応するインスタンス変数にアクセスする必要があるかどうかを示すブール値を返します。
宣言
<< SWIFT >>
class func accessInstanceVariablesDirectly() -> Bool
<< OBJECTIVE-C >>
+ (BOOL)accessInstanceVariablesDirectly
戻り値
キー値コーディングメソッドが、プロパティ用のアクセサメソッドを見つけていないもの上に直接対応するインスタンス変数にアクセスする必要がある場合は YES、それ以外は NO。
議論
デフォルトでは YES を返します。サブクラスは、NO を返すためにオーバーライドでき、その場合には、キー値コーディングメソッドはインスタンス変数にアクセスしないでしょう。
利用可能
OS X v10.0 以降で利用可能。
検証
- validateValue:forKey:error:
与えられたポインタで指定された値が、与えられたキーによって識別されるプロパティのために有効かどうかを示すブール値を返します。
宣言
<< SWIFT >>
func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKey inKey: String) throws
<< OBJECTIVE-C >>
- (BOOL)validateValue:(inout id _Nullable *)ioValue forKey:(NSString *)key error:(out NSError * _Nullable *)outError
パラメーター
ioValue | key によって識別されるプロパティの新しい値へのポインタ。このメソッドは、それを有効にするための値を変更または置き換えることができます。 |
key | 受信者の1つのプロパティの名前。キーは、属性または 1対1 の関係を指定する必要があります。 |
outError | 検証が必要であり、ioValue が有効な値ではない理由を説明する NSError オブジェクトを戻り値が含む時に ioValue が、有効な値に変換されていない場合。 |
戻り値
* ioValue がkey によって識別されるプロパティの有効な値である場合、またはメソッドが * ioValue が、それを有効にするために値を変更できる場合、YES。それ以外の場合は NO。
議論
このメソッドのデフォルト実装は、その名前がパターン validate<Key>:error: と一致する検証メソッド用の受信者のクラスを検索します。このようなメソッドが発見された場合、それが呼び出され、その結果が返されます。そのような方法が見つからない場合は、YES を返します。
メッセージの送信者は、ioValue または outError を解放する責任を与えられることは決してありません。
詳細については、キー値の検証 を参照してください。
Swift でのエラーの処理
Swiftでは、このメソッドは void を返し、それが失敗した場合にはエラーを throws することを示すために throws キーワードでマークされています。
try 式でこのメソッドを呼び出して、do 文の catch 節でエラーを処理します。この事は Swift プログラミング言語(Swift 2.2) の エラー処理 と、ココアと Objective-C でのスウィフトの使い方(Swift 2.2) の エラー処理 で説明しました。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
– validateValue:forKeyPath:error:
- validateValue:forKeyPath:error:
与えられたポインタで指定された値が受信者に与えられたキーの相対パスで有効かどうかを示すブール値を返します。
宣言
<< SWIFT >>
func validateValue(_ ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKeyPath inKeyPath: String) throws
<< OBJECTIVE-C >>
- (BOOL)validateValue:(inout id _Nullable *)ioValue forKeyPath:(NSString *)key error:(out NSError * _Nullable *)outError
パラメーター
ioValue | keyPath によって識別されるプロパティの新しい値へのポインタ。このメソッドは、それを有効にするために値を変更または置き換えることができます。 |
key | 受信者の1つのプロパティの名前。キーパスは、属性または 1対1 の関係を指定する必要があります。キーパスは、(1つ以上の関係で) 形式 relationship.property を持っています。例えば"department.name" または"department.manager.lastName"。 |
outError | 検証が必要であり、ioValue が有効な値ではない理由を説明する NSError オブジェクトを含む値を戻す時に ioValue は、有効な値に変換されていない場合。 |
議論
デフォルトの実装では、valueForKey: を使用して、各関係の宛先オブジェクトを取得し、最終的なオブジェクトへの validateValue:forKey:error: のメッセージを送った結果を返します。
Swift でのエラーの処理
Swiftでは、このメソッドは void を返し、それが失敗した場合にはエラーを throws することを示すために throws キーワードでマークされています。
try 式でこのメソッドを呼び出して、do 文の catch 節でエラーを処理します。この事は Swift プログラミング言語(Swift 2.2) の エラー処理 と、ココアと Objective-C でのスウィフトの使い方(Swift 2.2) の エラー処理 で説明しました。
利用可能
OS X v10.3 以降で利用可能。
以下も見よ
旧式のメソッド
+ useStoredAccessor
(OS X v10.4)保存されている値メソッド storedValueForKey: と takeStoredValue:forKey: がパブリックアクセッサに優先して、プライベートアクセサメソッドを使用する必要があれば、YES を返します。
旧式の文
このメソッドには、何も直接の交換がありませんが、accessInstanceVariablesDirectly を参照してください。
宣言
<< OBJECTIVE-C >>
+ (BOOL)useStoredAccessor
議論
NO を返すと、保存された値メソッドに同じアクセサメソッドまたはインスタンス変数が対応する基本のキー値コーディングメソッド(valueForKey: と takeValue:forKey:) の検索順序を使用するようになります。デフォルトの実装では、YES を返します。
アプリケーションは storedValueForKey: と takeStoredValue: の代わりに valueForKey と setValue:forKey: メソッドを使用する必要があります。
利用可能
OS X v10.0 以降で利用可能。
OS X v10.4 で旧式となりました。
- handleQueryWithUnboundKey:
(OS X v10.3)key に対応するプロパティが見つからないとき、valueForKey: によって呼び出されます。
旧式の文
代わりに valueForUndefinedKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (id)handleQueryWithUnboundKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- handleTakeValue:forUnboundKey:
(OS X v10.3)key にバインディングしているプロパティを見つけられないとき、takeValue:forKey: によって呼び出されます。
旧式の文
代わりに setValue:forUndefinedKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)handleTakeValue:(id)value forUnboundKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- storedValueForKey:
(OS X v10.4)与えられたキーによって識別されるプロパティを返します。
旧式の文
NSManagedObject クラスを使用している場合は、代わりに primitiveValueForKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (id)storedValueForKey:(NSString *)key
議論
値がオブジェクトの倉庫に格納するために取得される場合は、この方法を使用するか(一般的に、この倉庫は、最終的にデータベース内にあります)、スナップショットに含めます。デフォルトの実装では、valueForKey: の実装に似てますが、それは別のメソッド/インスタンス変数の検索順序で key を解決します。
- key(アンダーバーが先行するメソッド) に基づいて、プライベートアクセッサメソッドを検索します。たとえば、"lastName" の key で、storedValueForKey: は _getLastName または _lastName という名前のメソッドを探します。
- プライベートアクセッサが見つからない場合は、key に基づいてインスタンス変数を検索し、直接その値を返します。たとえば、"lastName" の key で、storedValueForKey: は _lastName または lastName という名前のインスタンス変数を探します。
- プライベートアクセッサやインスタンス変数のいずれもが見つからなかった場合、storedValueForKey: はパブリックアクセッサメソッドを key に基づき検索します。key "lastName" の場合、これは getLastName か lastName でしょう。
- key が不明な場合は、storedValueForKey: は handleTakeValue:forUnboundKey: を呼び出します。
この別の検索順序は、public API を介して値を返す前に行われたバイパス処理をオブジェクトに可能にします。しかし、valueForKey: の検索順序を常に使用したい場合は、クラスメソッド useStoredAccessor が NO を返すように実装できます。そして、valueForKey: と同様、accessInstanceVariablesDirectly クラスメソッドとインスタンス変数の直接アクセスを防ぐことができます。
利用可能
OS X v10.0 以降で利用可能。
OS X v10.4 で旧式となりました。
- takeStoredValue:forKey:
(OS X v10.4)与えられたキーによって識別されるプロパティの値を設定します。
旧式の文
NSManagedObject クラスを使用している場合は、代わりに setPrimitiveValue:forKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeStoredValue:(id)value forKey:(NSString *)key
議論
このメソッドは、オブジェクトの倉庫からの値を持つ受信者を初期化するために使用するか(一般的に、この倉庫は、最終的にデータベースからあります)、スナップショットから値を復元します。デフォルトの実装は takeValue:forKey: と同様ですが、それは別のメソッド/インスタンス変数の検索順序で key を解決します。
- key(アンダーバーが先行するメソッド) に基づいて、プライベートアクセッサメソッドを検索します。たとえば、"lastName" の key で、takeStoredValue:forKey: は _setLastName という名前のメソッドを探します。
- プライベートアクセッサが見つからない場合は、key に基づいてインスタンス変数を検索し、直接その value を設定します。たとえば、"lastName" の key で、takeStoredValue:forKey: は _lastName または lastName という名前のインスタンス変数を探します。
- プライベートアクセッサやインスタンス変数のいずれもが見つからなかった場合、takeStoredValue:forKey: は key に基づいてパブリックアクセッサメソッドを検索します。"lastName" の key の場合、これは setLastName になるでしょう。
- key が不明な場合、takeStoredValue:forKey: は handleTakeValue:forUnboundKey: を呼び出します。
この別の検索順序は、public API を介して値を設定する前に行われたバイパス処理をオブジェクトに可能にします。しかし、takeValue:forKey: の検索順序を常に使用したい場合は、クラスメソッド useStoredAccessor が NO を返すように実装できます。そして、valueForKey: と同様、accessInstanceVariablesDirectly クラスメソッドとインスタンス変数の直接アクセスを防ぐことができます。
利用可能
OS X v10.0 以降で利用可能。
OS X v10.4 で旧式となりました。
- takeValuesFromDictionary:
(OS X v10.3)プロパティを識別するために、そのキーを使用して、与えられた辞書からの値で受信者のプロパティを設定します。
旧式の文
代わりに setValuesForKeysWithDictionary: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeValuesFromDictionary:(NSDictionary *)properties
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- takeValue:forKeyPath:
(OS X v10.3)keyPath によって識別されるプロパティの値を value に設定します。
旧式の文
代わりに setValue:forKeyPath: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeValue:(id)value forKeyPath:(NSString *)keyPath
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- takeValue:forKey:
(OS X v10.3)key によって識別されるプロパティの値を value に設定します。
旧式の文
代わりに setValue:forKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)takeValue:(id)value forKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- unableToSetNilForKey:
(OS X v10.3)key が、スカラー属性によって表されている場合に呼び出されます。
旧式の文
代わりに setNilValueForKey: を使用します。
宣言
<< OBJECTIVE-C >>
- (void)unableToSetNilForKey:(NSString *)key
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
- valuesForKeys:
(OS X v10.3)対応するプロパティ値である対応する値で、keys 内のプロパティ名をキーとして含む辞書を返します。
旧式の文
代わりに dictionaryWithValuesForKeys: を使用します。
宣言
<< OBJECTIVE-C >>
- (NSDictionary *)valuesForKeys:(NSArray *)keys
利用可能
OS X v10.0 以降で利用可能。
OS X v10.3 で旧式となりました。
定数
キー値コーディング例外名
この定数は、キー値コーディング操作が失敗したときに発生する例外の名前を定義します。
宣言
<< SWIFT >>
let NSUndefinedKeyException: String
<< OBJECTIVE-C >>
extern NSString *NSUndefinedKeyException;
定数
キー値コーディング操作が失敗した場合に発生します。userInfo キーは、NSUndefinedKeyException userInfo keys で説明しました。
OS X v10.3 以降で利用可能。
NSUndefinedKeyException userInfo Keys
これらの定数は NSUndefinedKeyException userInfo 辞書へのキーです。
宣言
<< OBJECTIVE-C >>
extern NSString *NSTargetObjectUserInfoKey;
extern NSString *NSUnknownUserInfoKey;
定数
オブジェクトの上でキー値コーディング操作に失敗したそのオブジェクト。
キー値コーディング操作が失敗したキー。
議論
追加情報は キー値コーディング例外名 を参照してください。
配列演算子
これらの定数は、利用可能な配列演算子を定義します。詳細については、セットと配列演算子 を参照してください。
宣言
<< SWIFT >>
let NSAverageKeyValueOperator: String
let NSCountKeyValueOperator: String
let NSDistinctUnionOfArraysKeyValueOperator: String
let NSDistinctUnionOfObjectsKeyValueOperator: String
let NSDistinctUnionOfSetsKeyValueOperator: String
let NSMaximumKeyValueOperator: String
let NSMinimumKeyValueOperator: String
let NSSumKeyValueOperator: String
let NSUnionOfArraysKeyValueOperator: String
let NSUnionOfObjectsKeyValueOperator: String
let NSUnionOfSetsKeyValueOperator: String
<< OBJECTIVE-C >>
NSString *const NSAverageKeyValueOperator;
NSString *const NSCountKeyValueOperator;
NSString *const NSDistinctUnionOfArraysKeyValueOperator;
NSString *const NSDistinctUnionOfObjectsKeyValueOperator;
NSString *const NSDistinctUnionOfSetsKeyValueOperator;
NSString *const NSMaximumKeyValueOperator;
NSString *const NSMinimumKeyValueOperator;
NSString *const NSSumKeyValueOperator;
NSString *const NSUnionOfArraysKeyValueOperator;
NSString *const NSUnionOfObjectsKeyValueOperator;
NSString *const NSUnionOfSetsKeyValueOperator;
定数
@avg 配列演算子。
OS X v10.4 以降で利用可能。
@acount 配列演算子。
OS X v10.4 以降で利用可能。
@distinctUnionOfArrays 配列演算子。
OS X v10.4 以降で利用可能。
@distinctUnionOfObjects 配列演算子。
OS X v10.4 以降で利用可能。
@distinctUnionOfSets 配列演算子。
OS X v10.4 以降で利用可能。
@max 配列演算子。
OS X v10.4 以降で利用可能。
@Min 配列演算子。
OS X v10.4 以降で利用可能。
@sum 配列演算子。
OS X v10.4 以降で利用可能。
@unionOfArrays 配列演算子。
OS X v10.4 以降で利用可能。
@unionOfObjects 配列演算子。
OS X v10.4 以降で利用可能。
@unionOfSets 配列演算子。
OS X v10.4 以降で利用可能。
利用可能
OS X v10.4 以降で利用可能。
次
Xcode の新機能
valueForKeyPath:
dictionaryWithValuesForKeys:
valueForUndefinedKey:
mutableArrayValueForKey:
mutableArrayValueForKeyPath:
mutableSetValueForKey:
mutableSetValueForKeyPath:
mutableOrderedSetValueForKey:
mutableOrderedSetValueForKeyPath:
setValuesForKeysWithDictionary:
setNilValueForKey:
setValue:forKey:
setValue:forUndefinedKey:
validateValue:forKeyPath:error:
handleQueryWithUnboundKey:
handleTakeValue:forUnboundKey:
storedValueForKey:
takeStoredValue:forKey:
takeValuesFromDictionary:
takeValue:forKeyPath:
takeValue:forKey:
unableToSetNilForKey:
valuesForKeys:
NSUndefinedKeyException userInfo Keys
配列演算子
文書改訂履歴
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))
トップへ(NSObject(NSKeyValueCoding))