1

私はいくつかのオブジェクトを反復処理していて、明らかにKey-Valueコーディングが気に入らないいくつかのプロパティを設定しようとしています。そのため、実行時に「キー」を表す文字列を作成できません。

ViewControllerのこの行はコンパイルされません:

[self setValue:offsetX forKeyPath:[NSString stringWithFormat:@"myView%d.center.x", anInt]];

しかし、ばかげたswitchステートメントでドット表記を使用してこれらのプロパティを設定できます。

myView1.center.x = offsetX;

これについて別の方法はありますか?おそらくmyView(i).center.xのようなアクセサーを作成しますか?それが無駄になることを十分に知っていたので、私も試しました:[NSString stringWithFormat:@ "myView%d"、anInt].center.x
無駄に...

4

1 に答える 1

3

コンパイルされない理由は、おそらくoffsetXがintまたはfloatであり、NSNumberではないためです(質問でコンパイラエラーメッセージを表示すると便利です)。

ただし、KVCとsetValue:forKeyPath:は非常に巧妙であり、NSNumberから自動的に変換されるため、次を使用します。

[self setValue:[NSNumber numberWithInt:offsetX] forKeyPath:[NSString stringWithFormat:@"myView%d.center.x", anInt]];

(または必要に応じてnumberWithFloat)。

于 2009-07-02T03:34:25.487 に答える