2

私はメソッドNSMutableStringを使用しようとしています。appendString正常に動作しますが、使用するたびにNSString may not Respond to append stringという警告が表示されます。これは私のコードです:

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

    [soapResults appendString: string];        //soapResults is an NSMutableString in .h
}  

NSString 文字列が原因でこの警告が表示されることはわかっていますが、この警告を削除するにはどうすればよいですか?

4

3 に答える 3

3
self.soapResults=(NSMutableString *)[self.soapResults stringByAppendingString:string];

or

soapResults=(NSMutableString *)[soapResults stringByAppendingString:string];

また

self.soapResults=(NSMutableString *)[[self.soapResults stringByAppendingString:string] mutableCopy];

    //    or

soapResults=(NSMutableString *)[[soapResults stringByAppendingString:string] mutableCopy];
于 2011-09-06T10:42:57.540 に答える
3

soapResults 実際にであり、警告NSMutableStringのみがあると確信している場合は、それを呼び出す前に単純にキャストします。appendString:

[(NSMutableString*)soapResults appendString: string]; 

NSMutableString として宣言soapResultsしたが、実際NSStringにはそれに影響を与えた場合、おそらく警告は表示されませんが、実行時にランタイム エラーが発生します。

soapResultsが である場合NSString(そう宣言したため、または an に影響を与えたため)、代わりに文字列を追加しNSStringて新しいを作成し、それから a を作成することができます...しかし、生成されるため、これはお勧めしません無駄な割り当て (これは避けたほうがよい)NSStringmutableCopyNSMutableString

于 2011-09-06T10:57:13.320 に答える
2

簡単に言えば、コードのこの時点では、soapResults はNSMutableString. おそらく、コードの他の場所で、誤ってNSString.

余談ですが、 は のサブクラスですが、NSString実際にはNSMutableStringコード的には. これは、コードで何が起こっているかを説明するのに役立ちます。NSMutableStringNSString

それでも、 anNSStringを anにキャストするのNSMutableStringは良い考えではありません。実際に行う必要があるのは、それが an になっている場所を見つけてNSString修正することです。

于 2011-09-06T11:25:37.413 に答える