【问题标题】:Dealing with <'null>' values in TouchJSON在 TouchJSON 中处理 <'null>' 值
【发布时间】:2010-11-09 09:36:43
【问题描述】:

我正在使用 TouchJSON 框架反序列化一些 JSON。来自解析的字典数组用于填充UITableView

我解析的 JSON 中的某些值有可能是空的。如果我将 NSLog 发送到控制台,结果如下:

id = 1234;
title = "Hello, World";
description = "<null>"; 
detail = "The world says hello";

这里的 description 值在从服务器检索时是一个空字符串。

所以 TouchJSON 识别出描述值是字符串类型,但是服务器的初衷是传达这是一个空字符串,比如description = @"";

如果我稍后尝试将 description 的值设置为 UILabels 文本属性,应用程序将崩溃。

所以我的问题是,我在 JSON 中有 NSNumbers 和 NSStrings,我应该遍历 TouchJSON 的反序列化方法的结果并测试所有值吗?我该怎么做?

我无法模拟如果 NSNumber 值为空会发生什么,我将如何对此进行测试?在这种情况下,NSNumber 值是否会为零而不是“null”?

【问题讨论】:

    标签: iphone ios touchjson


    【解决方案1】:

    我在使用 SBJSON 库时遇到了同样的问题。我的解决方案也适用于您的情况:我更改了库,以便 it 处理缺失值,在它返回的集合中将它们设置为 +[NSNull null]。这使您的客户端代码有点棘手,因为您必须处理可能得到NSNull 而不是NSString 的情况。但这只是疣的一个更明显的版本,您必须确定@"" 是指空字符串还是未设置的值。

    【讨论】:

    • 嗨,格雷厄姆,感谢您的建议。我不打算重写 TouchJSON 的扫描仪部分,所以我循环返回的数据并用 @"" 替换空字符串,用 0 替换空数字。我这样做是因为我只处理字符串和数字和我的数据直接进入可以使用@"" 的视图。
    • Graham,你更改了哪个文件?
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2015-02-13
    相关资源
    最近更新 更多