レシーバークラスが NSKeyValueProtocol に準拠している場合、長い道のりを歩むオプションがあります。
[myInstance setValue:[NSNumber numberWithInt:2] forKey:@"integerProperty"];
または短い方法:
myInstance.integerProperty = 2;
この KVC メソッドのポイントは何ですか? これはいつ役に立ちますか?
レシーバークラスが NSKeyValueProtocol に準拠している場合、長い道のりを歩むオプションがあります。
[myInstance setValue:[NSNumber numberWithInt:2] forKey:@"integerProperty"];
または短い方法:
myInstance.integerProperty = 2;
この KVC メソッドのポイントは何ですか? これはいつ役に立ちますか?
まず、それらは同じではありません。2 番目は次のようになります。
myInstance.integerProperty = [NSNumber numbwerWithInt:2];
integerProperty
の場合NSNumber
。
通常、最も多くのことを行う場合は、2 番目の形式を使用します。setValue:forKey:
物を格納するプロパティを動的に選択したい場合にandを使用valueForKey:
します。たとえば、 an がどのように機能するかを考えますvalueForKeyPath:
(NSArray
参考までに、-valueForKey:
an に対して呼び出すと、NSArray
各オブジェクトが対応するオブジェクトに問い合わせた結果である配列が返されます)。そのNSArray
値のその中で:
- (NSArray *) valueForKey:(id)key {
NSMutableArray *retval = [NSMutableArray array];
for (NSObject *object in self) {
[retval addObject:[object valueForKey:key]];
}
return retval;
}
上記の場合valueForKey:
、キーが引数として渡されるため、キーが何であるかを事前に知らなくても、関数を実装するために使用できました。