Reputation: 919
I have a web server which I used to fetch some data in my iOS application. The data include a field as the itemId
let say '48501'
(with no quotation). I read item JSON data into my itemObject
in which itemId
is defined as a NSString
and not a NSInteger
.
Everything works until this point but I have problems where I want to compare itemObject.itemId
using isEqual:
function with another NSString
filled with 48501
.
In other words both string are exactly the same and include 48501
when I print them. No space and hidden things is there. All isEqual:
and isEqualToString:
and ==
report false on comparison.
On the hand when I convert NSStrings
to NSInteger
s and compare them it works but not always! sometime TRUE
sometime CRASH with no error to catch and just pointing to the line! I see them printed exactly the same but the if statement does not go through.
I showed the code to someone with far more experience than me and he was like this could be a bug! Anyone has ever exposed to this?
Upvotes: 0
Views: 141
Reputation: 15213
If your itemId
is 48501
without any quotation in the JSON
, then it's deserialized as NSNumber
. Probably that's the problem in the first place. Try logging the type of your itemId
and use appropriately -isEqualToString:
for NSString
and -isEqualToNumber:
for NSNumber
.
Upvotes: 5