0

プロパティの1つを変更する必要があるビジネスオブジェクトがあります。次のコードで試しているように、そのプロパティの文字列表現を取得してから変更しようとしています

  NSMutableString *mutatingString = [ [ NSMutableString alloc ] init ] ;
  mutatingString = ( NSMutableString * ) [ businessOject valueForKey:@"basicproperty" ] ;
  [ mutatingString appendString:@"Modified" ];

ただし、appendStringの3行目をホットにすると、次の例外が発生します。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
   'Attempt to mutate immutable object with appendString:'

私のコードの何が問題になっていますか?

4

1 に答える 1

1

[businessOject valueForKey:@"basicproperty"]の結果をNSString*からNSMutableString*にキャストしないでください。

NSString* str  =   [businessOject valueForKey:@"basicproperty" ];
NSMutableString *mutatingString = [[NSMutableString alloc ] initWithString:str  ] ;
[mutatingString appendString:@"Modified" ];
[businessOject setValue:mutatingString forKey:@"basicproperty" ] 
于 2012-10-22T15:34:19.883 に答える