NSString *nodeType = [subNodeDict objectForKey:@"nodeType"];
NSLog (@"nodeType = %@", nodeType);
NSLog (@"(nodeType == @\"Collection\") = %d", nodeType == @"Collection");
NSLog (@"[nodeType class] = %@ and [@\"Collection\" class] = %@", [nodeType class], [@"Collection" class]);
2013-01-01 04:06:37.895 GoogleClient[4752:c07] <strong>nodeType = Collection
2013-01-01 04:06:37.896 GoogleClient[4752:c07] <strong>(nodeType == @"Collection") = 0
2013-01-01 04:06:37.896 GoogleClient[4752:c07]
<strong>[nodeType class] = __NSCFString and [@"Collection" class] = __NSCFConstantString
subNodeDict
是一个JSON响应对象,通过AFNetworking从服务器返回。
我无法弄清楚如何准确地将从服务器返回的字符串与常量字符串进行比较。 subNodeDict中的所有非字符串对象都可以正常工作。我需要使用某种类型的UTF-8编码吗?如何获得trueType的真值?
答案 0 :(得分:1)
==
正在比较两个指针,而不是字符串的内容。要比较NSString使用isEqualToString:
方法。
[nodeType isEqualToString:@"Collection"]
考虑一下:
NSString *foo = @"abc";
NSString *bar = @"abc";
foo == bar; // false
[foo isEqualToString:bar]; // true
foo == bar
是错误的,因为它们是不同的指针,即使它们的内容相同。
答案 1 :(得分:0)
您不应该将==
用于字符串,因为这是指针比较,而是执行以下操作:
[nodeType compare:@"Collection"]
其中compare
是NSString