Objective c NSString等位奇怪错误

Objective c NSString等位奇怪错误,objective-c,json,nsstring,Objective C,Json,Nsstring,我有一个web服务器,用于在iOS应用程序中获取一些数据。数据包括一个字段作为itemId让我们说'48501'(不带引号)。我将item JSON数据读入我的itemObject,其中itemId被定义为NSString,而不是NSInteger 在这一点之前,一切都正常,但在使用isEqual:函数与另一个NSString填充了48501的函数比较itemObject.itemId时,我遇到了一些问题 换句话说,这两个字符串完全相同,在打印它们时包含48501。那里没有空间和隐藏的东西。所有

我有一个web服务器,用于在iOS应用程序中获取一些数据。数据包括一个字段作为
itemId
让我们说
'48501'
(不带引号)。我将item JSON数据读入我的
itemObject
,其中
itemId
被定义为
NSString
,而不是
NSInteger

在这一点之前,一切都正常,但在使用
isEqual:
函数与另一个
NSString
填充了
48501
的函数比较
itemObject.itemId
时,我遇到了一些问题

换句话说,这两个字符串完全相同,在打印它们时包含
48501
。那里没有空间和隐藏的东西。所有
isEqual:
IseQualString:
==
在比较时报告为false

另一方面,当我将
NSStrings
转换为
NSInteger
s并对它们进行比较时,它会起作用,但并不总是如此!有时
TRUE
有时崩溃,没有错误捕捉,只是指向线路!我看到它们打印的完全一样,但是if语句没有通过


我向比我更有经验的人展示了代码,他觉得这可能是一个bug!有人接触过这个吗?

如果你的
itemId
48501
,在
JSON
中没有任何引号,那么它将被反序列化为
NSNumber
。也许这就是问题所在。尝试记录您的
itemId
的类型,并对
NSString
使用适当的
-isEqualToString:
-isEqualToNumber:
来记录
NSNumber

如果您的
itemId
48501
,而在
JSON
中没有任何引用,则将其反序列化为
NSNumber
。也许这就是问题所在。尝试记录您的
itemId
的类型,并对
NSString
使用
-isEqualToString:
-isEqualToNumber:
NSNumber

使用适当的
-isEqualToNumber:
是否记录了两个字符串的长度以确保它们给出相同的值?我非常非常怀疑您是否在处理bug。听起来你好像做错了什么。您需要记录比较并发布其输出或发布代码。解析JSON对象
48501
后,您确定它是字符串而不是
NSNumber
?试图通过将内容打印到控制台的方式来确定它是什么并没有多大帮助。同时打印该类。围绕数字的引号通常会产生误导。将属性定义为
NSString
并不意味着阻止您执行以下操作:
myObject.itemId=@1
。它仍将记录为
1
,但它不是
NSString
而是
NSNumber
,这就是比较失败的原因。检查是否从JSON中分配了字符串,或者执行
NSLog(@“%@,[myObject.itemId类])
在赋值后检查属性的真实类…是的,如果JSON表示中的数字周围没有引号,那么它将转换为NSNumber。您是否记录了两个字符串的长度以确保它们给出相同的值?我非常非常怀疑您处理的是错误。听起来你好像做错了什么。您需要记录比较并发布其输出或发布代码。解析JSON对象
48501
后,您确定它是字符串而不是
NSNumber
?试图通过将内容打印到控制台的方式来确定它是什么并没有多大帮助。同时打印该类。围绕数字的引号通常会产生误导。将属性定义为
NSString
并不意味着阻止您执行以下操作:
myObject.itemId=@1
。它仍将记录为
1
,但它不是
NSString
而是
NSNumber
,这就是比较失败的原因。检查是否从JSON中分配了字符串,或者执行
NSLog(@“%@,[myObject.itemId类])在赋值后检查属性的真实类…是的,如果JSON表示中的数字周围没有引号,那么它将转换为NSNumber。太好了!这解决了我的问题。谢谢大家,太好了!这解决了我的问题。谢谢大家。