【问题标题】:NSString may not respond to append stringNSString 可能不响应附加字符串
【发布时间】:2011-11-11 05:23:23
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: iphone nsstring nsmutablestring


    【解决方案1】:
    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];
    

    【讨论】:

    • stringByAppendingString 将返回 NSString。所以我们必须手动指定 NSMutableString*
    • @nitish u r welcome.but 在别人询问或请求时回应他们。再次感谢。祝你有美好的一天。
    • 抱歉我之前的评论(后来我删除了):我没有在你的代码中看到“mutableCopy”(它在屏幕外并且没有滚动条告诉我)。显然,使用mutableCopy,您的代码可以工作(即使它会生成无用的分配来执行此操作——生成一个新的 NSString,然后生成它的 mutableCopy——而不是修改现有的 NSMutableString)
    • @AliSoftware 我们所有人都不是目标 c 的天才。但试图做......就是这样。所以不要说对不起!!!.u 摇滚
    【解决方案2】:

    如果您确定soapResults 实际上是NSMutableString,并且只有一个警告,那么只需在调用appendString: 之前将其转换为:

    [(NSMutableString*)soapResults appendString: string]; 
    

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

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

    【讨论】:

    • 非常感谢。但是正如 AppleVijay 之前发布的正确答案一样,我必须接受他的答案:)
    【解决方案3】:

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

    顺便说一句,NSString 在代码方面确实是 NSMutableString,尽管 NSMutableStringNSString 的子类。这可能有助于解释代码中发生了什么。

    不过,将 NSString 转换为 NSMutableString 并不是一个好主意,真正需要做的是找到它变成 NSString 的位置并修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      相关资源
      最近更新 更多