我正在使用TouchJSON
框架反序列化一些JSON。来自解析的字典数组用于填充UITableView
。
我解析的JSON中的某些值可能是空的。如果我NSLog
它到控制台,则会产生如下值:
id = 1234;
title = "Hello, World";
description = "<null>";
detail = "The world says hello";
从服务器检索时, description 值为空字符串。
因此TouchJSON识别出描述值是字符串类型,但服务器的初衷是为了进行通信,这是一个空字符串,例如description = @"";
如果我稍后尝试设置描述的值,为UILabels
文本属性的应用程序会崩溃。
所以我的问题是,我都NSNumbers和NSString的在JSON,我应该遍历从TouchJSON的反序列化方法的结果,并测试所有值,我会怎么做呢?
我无法模拟如果NSNumber值为空会发生什么,我将如何测试?在这种情况下,NSNumber值是否为nil而不是“null”?
答案 0 :(得分:2)
我正在使用SBJSON库并遇到了同样的问题。我的解决方案也适用于您的情况:我更改了库,以便 it 处理缺失值,并将其设置为返回的集合中的+[NSNull null]
。这使得您的客户端代码有点肮脏,因为您必须处理可能会获得NSNull
而不是NSString
的情况。但这只是疣的一个更明显的版本,你必须决定@""
是指空字符串还是未设置的值。