0

我无法检查我的一把钥匙是否为空。

以下是我正在使用的解析 JSON 响应:

案例 1(键 'tags' 不为空)

{
height = 480;
pid = "a@bsioihf93u420934";
tags =     (
            {
        attributes =             {
            mood =                 {
                confidence = 42;
                value = happy;
            };
            smiling =                 {
                confidence = 52;
                value = false;
            };
        };
        center =             {
            x = "49.86";
            y = "60.52";
        };
        confirmed = 0;
        width = "50.28";
    }
);
url = "http://abc/efg/hijk/lmnop.jpg";
width = 360;
}

有时响应如下所示:

案例 2(键“标签”为空)

{
height = 480;
pid = "a@bsioihf93u420934";
tags =     (
);
url = "http://abc/efg/hijk/lmnop.jpg";
width = 360;
}

当我在案例 2 中检查 'tags' 是否为空时,它返回 false :

if ([photo objectForKey:@"tags"] == nil)

[photo objectForKey:@"tags"]检查日志中的实际值返回:

(
) 

我还能如何检查“标签”是否为空?

4

2 回答 2

7

尝试:

if ([[photo objectForKey:@"tags"] count] == 0)
于 2012-07-15T04:07:30.420 回答
0

您究竟如何解析和存储 JSON 文本?看起来您可能正在将其存储到 NSArray/NSDictionary(可能)中?稍微澄清一下它是如何被解析的以及存储它的数据结构会有所帮助。

假设您将它存储在 NSArray/NSDictionary 中,那么您当前检查“标签”是否为空的方式有什么问题/不起作用?

如果

if ([photo objectForKey:@"tags"] == nil)

在第一种情况下返回false,在第二种情况下返回true,这意味着在第二种情况下,键“tags”的数据结构中没有值,这意味着“tags”字段为空。

这实际上似乎是最好和最实用的检查方法。

于 2012-07-15T04:07:33.637 回答