NSString可能无法响应追加字符串

时间:2011-09-06 10:39:01

标签: iphone nsstring nsmutablestring

我有NSMutableString,我正在尝试使用appendString方法。虽然它工作正常,但每次我使用它时,都会收到警告 NSString可能无法响应追加字符串。这是我的代码:

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

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

我知道我收到此警告是因为 NSString字符串但是如何删除此警告?

3 个答案:

答案 0 :(得分:3)

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

or

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

OR

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

    //    or

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

答案 1 :(得分:3)

如果您确定soapResults 实际上是NSMutableString,并且只有警告,那么只需在调用{{1对它:

appendString:

如果您将[(NSMutableString*)soapResults appendString: string]; 声明为NSMutableString但实际上影响了soapResults,那么您可能没有警告,但执行时会出现运行时错误。

如果NSStringsoapResults(或者因为您声明了这一点,或者因为您影响了NSString),您可能会创建一个新的NSString通过向其添加字符串,然后从中创建一个NSString ...但我推荐它,因为它会生成无用的分配(mutableCopy更好避免这种情况)

答案 2 :(得分:2)

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

顺便说一下,NSString实际上是NSMutableString代码,即使NSMutableStringNSString的子类。这可能有助于解释代码中发生的事情。

尽管如此,将NSString投射到NSMutableString并不是一个好主意,真正需要做的是找到它成为NSString的位置并修复它。