如何检查iphone中已解析元素的条件

Posted

技术标签:

【中文标题】如何检查iphone中已解析元素的条件【英文标题】:how to check condition for parsed elements in iphone 【发布时间】:2011-04-19 08:50:54 【问题描述】:

从我项目中的 Json 解析中,我得到了这些元素...

执行指令:-

NSArray *feed3 = (NSArray *)[feed valueForKey:@"type"];  
NSLog(@" %@",feed3);

在控制台中我得到了这个

( 状态, 照片, 链接, 视频)

现在我想检查这些元素的条件..

喜欢

if(type==staus)  
//do some thing  
 

如何在 xcode 中做到这一点?

【问题讨论】:

你的原始 JSON 数据是什么? 这里..***.com/questions/5712108/… 【参考方案1】:

我假设 feed3 是 JSON 解析器在解析了您在另一个问题中列出的 JSON 数据后返回的对象。在这种情况下:

* the top level object is an array
* every element in the array is an object/dictionary representing news
* this object/dictionary contains the following keys:
  * application (object/dictionary with two keys: id, name)
    * id (number)
    * name (string)
  * created_time (string)
  * from (object/dictionary with two keys: id, name)
    * id (number)
    * name (string)
  * icon (string)
  * id (string)
  * likes (object/dictionary with two keys: count, data)
    * count (number)
    * data (array)
      * every element in the array is an object/dictionary
      * this object/dictionary has two keys (id, name)
        * id (number)
        * name (string)
  * link (string)
  * name (string)
  * picture (string)
  * properties (array of objects/dictionaries)
  * type (string)
  * updated_time (string)

解析 JSON 数据时,了解数据的组织方式至关重要。我建议您在必须解析 JSON 时始终执行上述操作。

由于您对“类型”感兴趣,因此您需要遵循以下路径:

遍历消息的顶层数组 数组中的每个元素都是一个对象/字典 此对象/字典有一个名为“type”的键

下面的代码应该可以解决问题:

for (NSDictionary *news in feed3) 
    NSString *type = [news objectForKey:@"type"];

    if ([type isEqualToString:@"status"]) 
       …
    
    else if ([type isEqualToString:@"photo"])  
       …
    
    else if ([type isEqualToString:@"link"])  
       …
    
    else if ([type isEqualToString:@"video"])  
       …
    

请注意,一般情况下,您应该使用-objectForKey: 而不是-valueForKey:

-objectForKey: 是在NSDictionary 中声明的方法,它用于获取存储在给定相应键的字典中的对象。 -valueForKey: 是一种 KVC 方法,用于另一个目的。特别是,它可以在您不期望时返回一个数组!

【讨论】:

嘿..Bavarious...这是我得到的很好的解释..因为我是一个新人..请建议我在哪里可以学习这样的解析东西..任何好的网站或任何书,如果你能建议..非常感谢...接受和向上:) @rathodrc 本质上是在密切关注数据。当您有行 JSON 数据时,将其粘贴到 jsonlint.com 上会很有用——它会告诉您数据是否有效,并以易于理解的方式格式化它们。 @rathodrc 但请注意,您已在另一个问题中发布不是原始 JSON 数据 - 这只是 NSLog() 打印数组和字典的方式。【参考方案2】:

查看下方

for(int index = 0 ; index < [feed3 count] ; index++)

    NSString* tempString = [feed3 objectAtIndex:index];

    if([tempString isEqualToString:@"status"]) 
    
      //Get value for status from value array
    
    else if([tempString isEqualToString:@"photo"]) 
    
      //Get value for photo from value array
    
    else if([tempString isEqualToString:@"link"]) 
    
      //Get value for link from value array
    
    else if([tempString isEqualToString:@"video"]) 
    
      //Get value for video from value array
    

【讨论】:

还是不行。 :-P JSON解析器返回的对象是一个由字典对象组成的数组。

以上是关于如何检查iphone中已解析元素的条件的主要内容,如果未能解决你的问题,请参考以下文章

分配给 iphone sdk 中已分配的变量

如何解析此 xml 并检索 iPhone 中的数据 [重复]

(iOS) 如何检查 iPhone 的配对蓝牙设备?

发送到 iPhone 中已释放实例的消息

iPhone:有条件地加载视图

iPhone与Mac手机连接,进行h5页面元素检查