我有NSMutableString
,我正在尝试使用appendString
方法。虽然它工作正常,但每次我使用它时,都会收到警告 NSString可能无法响应追加字符串。这是我的代码:
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[soapResults appendString: string]; //soapResults is an NSMutableString in .h
}
我知道我收到此警告是因为 NSString字符串但是如何删除此警告?
答案 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
,那么您可能没有警告,但执行时会出现运行时错误。
如果NSString
是soapResults
(或者因为您声明了这一点,或者因为您影响了NSString
),您可能会创建一个新的NSString
通过向其添加字符串,然后从中创建一个NSString
...但我不推荐它,因为它会生成无用的分配(mutableCopy
更好避免这种情况)
答案 2 :(得分:2)
简单来说,代码中的soapResults不是NSMutableString
。也许在代码的其他地方,它无意中被NSString
替换。
顺便说一下,NSString
实际上是NSMutableString
代码,即使NSMutableString
是NSString
的子类。这可能有助于解释代码中发生的事情。
尽管如此,将NSString
投射到NSMutableString
并不是一个好主意,真正需要做的是找到它成为NSString
的位置并修复它。