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]; 

如果您声明soapResults为 NSMutableString 但实际上影响了NSString它,那么您可能没有警告,但在执行时会出现运行时错误。

如果soapResults是一个NSString(因为你声明它或者因为你影响了NSString它),你可以NSString通过向它附加字符串来创建一个新的,然后mutableCopy从它创建一个......但我推荐这样做,因为它会生成无用的分配(NSMutableString最好避免这种情况)

于 2011-09-06T10:57:13.320 回答
2

简单地说,此时代码中的 soapResults 不是NSMutableString. 也许在代码中的其他地方它无意中被替换为NSString.

顺便NSString说一句,NSMutableString即使NSMutableStringNSString. 这可能有助于解释代码中发生了什么。

尽管如此,将 anNSString转换为 anNSMutableString并不是一个好主意,真正需要做的是找到它变成 an 的位置NSString并修复它。

于 2011-09-06T11:25:37.413 回答