NSString是等同的奇怪的bug

时间:2013-11-05 16:34:16

标签: objective-c json nsstring

我有一个Web服务器,我曾经在我的iOS应用程序中获取一些数据。数据包含一个字段itemId让我们说'48501'(没有引用)。我将项目JSON数据读入我的itemObject,其中itemId被定义为NSString而不是NSInteger

在此之前一切正常但我在使用itemObject.itemId功能isEqual:与填充NSString的其他48501进行比较时遇到问题。

换句话说,当我打印它们时,两个字符串完全相同并包含48501。没有空间和隐藏的东西。所有isEqual:isEqualToString:以及==在比较时均为false。

当我将NSStrings转换为NSInteger并对它们进行比较时,它有效,但并非总是如此!有时TRUE有时CRASH没有错误捕获并只是指向该行!我看到它们的印刷完全相同,但if语句没有通过。

我向那些经验丰富的人展示了代码,他觉得这可能是一个错误!有没有人接触过这个?

1 个答案:

答案 0 :(得分:5)

如果itemId中的48501 JSON没有任何引用,则NSNumber将其反序列化为itemId。可能这首先是问题所在。尝试记录-isEqualToString:的类型并正确使用NSString -isEqualToNumber:NSNumber {{1}}。