为什么两个相同的字符串没有测试相同?

时间:2010-02-22 16:43:40

标签: iphone objective-c string compare

我的代码:

stringFromRecievedData =
    [[NSString alloc]initWithData:_data1 encoding:NSUTF8StringEncoding];

if (![stringFromRecievedData isEqualToString:lastStringFromRecievedData]) {
    [lastStringFromRecievedData setString: stringFromRecievedData];

即使在第二轮中我也得到相同的“不相等”结果 - 即使每次都是相同的数据......

这是比较两者的正确方法吗?

感谢。

2 个答案:

答案 0 :(得分:4)

如果lastStringFromRecievedDataNSString(或子类,例如NSMutableString)的实例,那么这是比较两个字符串的正确方法。在这种情况下,其他可能导致你的字符串不相等。

但是,看起来lastStringFromRecievedData是另一个对象,因为您在其上调用setString:。如果是这种情况,则需要首先从该对象获取字符串。

stringFromRecievedData =
    [[NSString alloc]initWithData:_data1 encoding:NSUTF8StringEncoding];

// Assuming 'string' is the function to get the string from 'setString:' below
NSString *otherString = [lastStringFromRecievedData string];

if (![stringFromRecievedData isEqualToString:otherString]) {
    [lastStringFromRecievedData setString: stringFromRecievedData];

答案 1 :(得分:0)

如果你正在做的就是确保你的NSMutableString与另一个NSString相同,那么为什么不这样做:

lastStringFromRecievedData = [stringFromRecievedData mutableCopy];

或者:

[lastStringFromRecievedData setString:stringFromRecievedData];

最终结果将是相同的。