iOS JSON 请求
我有一个应用程序向服务器上的 JSON 发出请求以获取一些数据。一切正常,直到 JSON 中字段的值为 null
值。然后应用程序崩溃。 因此,我获取数据,将其放入 NSDictionary 中,然后访问该字典中的所有值。我已尝试使用这些 if()
语句,但如果值为 null
,应用程序仍然会崩溃。
if([item valueForKey:@"title"]!=NULL)
[sbcvItem setTitle:[item valueForKey:@"title"]];
if([item valueForKey:@"desc"]!=NULL)
[sbcvItem setDesc:[item valueForKey:@"desc"]];
if([item valueForKey:@"url"]!=NULL)
[sbcvItem setUrl:[item valueForKey:@"url"]];
欢迎任何建议。
I have an app making a request to a JSON on a server to fetch some data . All works fine until
the value for a field in the JSON has the null
value . Then the app crashes .
So I get the data , put it in a NSDictionary , and then access all the values in that dictionary . I've tried with those if()
statements but still , if the value is null
, the app crashes .
if([item valueForKey:@"title"]!=NULL)
[sbcvItem setTitle:[item valueForKey:@"title"]];
if([item valueForKey:@"desc"]!=NULL)
[sbcvItem setDesc:[item valueForKey:@"desc"]];
if([item valueForKey:@"url"]!=NULL)
[sbcvItem setUrl:[item valueForKey:@"url"]];
Any suggestion is welcome .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该使用
nil
,而不是NULL
。我建议您通过在调试器中设置断点来检查
item
的值。也许item
本身就是nil
?You should use
nil
, notNULL
.I suggest you inspect the values of
item
by setting a breakpoint in the debugger. Perhapsitem
itself isnil
?NSDictionary
和NSArray
都不能将nil
(或NULL
)存储为值。相反,我们使用占位符对象。该占位符对象是NSNull
类的单例,您可以使用[NSNull null]
获得指向它的指针。所以你需要这样测试:Neither
NSDictionary
norNSArray
can storenil
(orNULL
) as a value. Instead, we use a placeholder object. That placeholder object is a singleton of classNSNull
, and you get a pointer to it using[NSNull null]
. So you need to test like this:答案取决于您从 json 解析器获得的内容。通常你会得到空对象的字符串值,例如“< null>”,在这种情况下你的 if 应该是:
如果你实际上得到了 nil 对象,那么你可以尝试:
为了确保你在字典中有什么,你可以 nslog它。
The answer depends on what you getting from the json parser. usually you getting string value for null objects, for example "< null>", in this case your if should be:
in case you actually getting nil object then you can try:
to make sure what you have inside the dictionary you can nslog it.