来自复杂的YouTube API的JSON的NSDictionaries和NSArrays

时间:2010-12-05 13:57:14

标签: iphone objective-c error-handling try-catch

我正在制作一款非常棒的iPhone应用,可以使用JSON API搜索YouTube视频。但是,Google很懒,所以他们只是将ATOM提要转换为JSON。事情看起来像这样:

feed->entry[0]->author[0]->name->$t

这意味着从NSArray中获取信息很困难,因为我需要获取键对象数组的对象数组的对象键的值。

要检查结构是否正确,我可以选择两件事:

  1. 对于我想要检查JSON是否正确的每个项目,请使用大量代码。
  2. 将所有内容包裹在@try块中。
  3. 我想选择第二个。问题是前段时间我读到这是不好的做法。是吗?如果是这样,是否有更短的方法来验证NSArrays和NSDictionaries?我的应用程序可能永远不会崩溃,即使用户在运行时卸载处理器也不会崩溃,因此根本不进行检查不是一种选择。

    你能帮帮我吗?感谢。

3 个答案:

答案 0 :(得分:1)

您是否尝试过GData API?我将它用于我的应用程序(http://itunes.apple.com/us/app/skystop/id392782307?mt=8)用于Youtube Feed。它基本上为您要求的任何内容发出XML文件,您可以将其直接转换为plist文件或NSArray。

答案 1 :(得分:0)

我不确定我理解,API本身是用JSON而不是ATOM工作所以你需要进入每个项目? 如果是这样,那么你是对的,你可以做的事情不多,除了为网页寻找可能已经在谷歌代码中支持这个API的帮助库。

在任何情况下,#2都是不好的做法,因为try catch通常消耗更多的系统资源,然后是简单的布尔面颊或检查。 第二,一旦你进入catch区域,你就会遇到问题,因为所有你能做的就是给用户或你自己打错,如果你想继续解析和检查,你不能...... 并且最后但并非最不重要(我确定有理由我没有考虑)除了你可能得到的消息,例外你永远不确定它来自哪里......

答案 2 :(得分:0)

你自己在解析JSON吗?如果是这样,我建议使用外部框架为您完成工作。我在一些自己的项目中使用了Json-framework,它完成了这项工作。

http://code.google.com/p/json-framework/