0

これはコードにありますが、オブジェクトがセレクターに応答するだけでなく、値のタイプがプロパティのタイプに対応していることを確認したいと思います。

   if ([object respondsToSelector:NSSelectorFromString(propName)]) 
      [object setValue:value forKey:propName];

たとえば、値がブール値で、プロパティが文字列の場合、ifを短絡させたいと思います。

4

2 に答える 2

2

これは、セッターをオーバーライドすることによっても達成できます。このようにして、プロパティを設定するすべての場所をチェックインする必要はありません。

- (void) setSomeString:(NSString *)someString {
    if (![someString isKindOfClass:[NSString class]]) return;

    _someString = someString;
}
于 2013-02-11T20:25:21.007 に答える
1

このカテゴリNSObject+Propertiesを使用します。このカテゴリは NSObject を拡張し、とりわけ、オブジェクトにプロパティがあるかどうかを確認する可能性を追加します。

- (BOOL) hasPropertyNamed: (NSString *) name;
- (BOOL) hasPropertyNamed: (NSString *) name ofType: (const char *) type;
- (BOOL) hasPropertyForKVCKey: (NSString *) key;
于 2013-02-11T20:16:07.787 に答える