0

シナリオ: 他の 2 つの NSObject 'B と C' の間の関係を表す NSObject 'A' があります。B と C の両方に、KVC を使用して取得されたプロパティ (NSStrings) があります。

「A」アクセサーの本体で NSExpression を使用して、複合文字列を導出したいと考えています。そう:

[B valueForKey:@"oneString"] returns 'Foo'
[C valueForKey:@"oneString"] returns 'Bar'
// And I would like to dynamically form
[A valueForKey:@"oneString"] returns 'Foo:Bar'

明らかなことはわかってい'stringWithFormat'ますが、実行時に決定されるさまざまなキーパスを使用してさまざまな式を許可する必要があります。

4

2 に答える 2

0

より完全な回答でコメントアウトからの考えを綴るためだけに:

oneString読み取り専用プロパティとして定義できます。

@property (readonly) NSString* oneString;

次に、カスタム アクセサーを定義します。

- (NSString *)oneString {
      // ... do your logic here
      NSString *firstStr = ...
      NSString *secondStr = ...
      return [NSString stringWithFormat:@"%@:%@", firstStr, secondStr];
}

+ (NSSet *) keyPathsForValuesAffectingOneString {
     return [NSSet setWithObjects: @"self.a", @"self.b", @"self.c", nil]; 
}

ブラウザに直接入力するため、タイプミスに注意してください

于 2013-04-30T12:53:15.113 に答える
0

あなたはできますか:

- (id)valueForUndefinedKey:(NSString*)key
{
    return [NSString stringWithFormat:@"%@:%@", [self.a valueForKey:key], [self.b valueForKey:key]];
}
于 2013-04-30T12:23:49.183 に答える