0

オブジェクト、プロパティの名前、およびその値を受け取る関数があります。次のような単純なものでオブジェクトのプロパティを設定できますか:

-(void)dynamicSetterWithProperty:(NSString*)propertyThatIsKnownOnlyInRuntime
                        andValue:(NSString*)valueThatIsKnownOnlyInRuntime{

       _myObject.propertyNameThatIsKnownOnlyInRuntime = valueNameThatIsKnownOnlyInRuntime;

}

または、この醜い方法でそれを行う必要がありますか:

-(void)dynamicSetterWithProperty:(NSString*)propertyThatIsKnownOnlyInRuntime
                        andValue:(NSString*)valueThatIsKnownOnlyInRuntime{

       if([propertyNameThatIsKnownOnlyInRuntime isEqualToString@"name"]){
              _myObject.name = valueNameThatIsKnownOnlyInRuntime;
       }

       else if([propertyNameThatIsKnownOnlyInRuntime isEqualToString@"age"]){
              _myObject.age = valueNameThatIsKnownOnlyInRuntime;
       }

}
4

1 に答える 1

3

さて、あなたはKVCを利用することができます:

[_myObject setValue:runtimeValue forKey:runtimeProperty];

もちろん、プロパティが有効かどうかを最初に確認したり、オーバーライドしてサブクラスで無効なメッセージをキャッチしたりできますrespondsToSelectorvalueForUndefinedKey:setValue:forUndefinedKey:

于 2013-06-29T21:45:53.880 に答える