【发布时间】:2013-01-21 18:53:16
【问题描述】:
我有一个字典声明,像这样,
NSString *responseString = [request responseString];
responseDict = [responseString JSONValue];
for (id key in responseDict){
NSLog(@"%@ : %@", key, [responseDict objectForKey:key]);
}
结果:
013-01-22 00:14:02.323 PromoTest[2352:c07] A : 0
2013-01-22 00:14:02.325 PromoTest[2352:c07] B : 1
2013-01-22 00:14:02.325 PromoTest[2352:c07] C : 0
现在,我想比较该值并对其进行一些操作。我假设键的值是 NSString 类型,并将其与我的常量 NSString 进行比较,就像这样,
NSString *myString1 = @"0";
NSString *myString2 = [responseDict objectForKey:@"A"];
NSLog(@"%d", (myString1 == myString2)); //1
NSLog(@"%d", [myString1 isEqualToString:myString2]); //1
结果:
2013-01-22 00:19:12.966 PromoTest[2423:c07] 0
2013-01-22 00:19:12.966 PromoTest[2423:c07] 0
我哪里错了??我的比较有错吗?如何正确比较内容??
数据作为响应数据从 Web 服务接收。我只是将数据转换成字典以便于使用它。 Web 服务返回一个 JSON 对象,
{"A":0,"B":1,"C":0}
【问题讨论】:
-
«我假设键的值是 NSString 类型» 看起来这种假设可能是错误的。你应该先验证它。那就看看Understanding NSString comparison
-
任何合理的 JSON 解析器都应该将数字映射到 NSNumber 而不是 NSString。如果乍一看这对您来说并不明显,请阅读您正在使用的 JSON 解析器的文档。
-
默认obj-c dict中键和值的类型是id
-
id只是为了方便说实际类型可以是任何对象类型。 -
@ttt:对象仍然拥有并且知道它们的类。
id是一种变量类型,可以保存指向任何对象的指针。
标签: objective-c nsstring nsdictionary