【问题标题】:JsonModel NSString transform null to empty stringJsonModel NSString 将 null 转换为空字符串
【发布时间】:2016-02-02 22:08:34
【问题描述】:

我在我的应用程序中使用 JSONModel。是否可以使用 JSONValueTransformer 准备将 nil/null NSString 转换为空字符串 (@"") 的类别。到目前为止,当json响应中的属性为空时,我的对象中的属性变为@“”。

因为整个 API 不是很好(它是外部的),所以我想避免在每个对象中覆盖 initWithDictionary,并且只对每个具有 NSString 属性的 JSONModel 类使用 ValueTransformer,并将其映射到正确的字符串或空字符串(如果为 nil/null)。

【问题讨论】:

  • 与其将 API 的响应从 NSNulls 转换为空的 @"",不如在您的应用程序中处理 nil 的情况?在 Obj-C 中使用 nil 并不是什么新鲜事在我看来,当字符串属性没有值时返回 NSNull 的 API 是正确的做法。
  • 首先,我试图从 ValueTransformer 方面将其作为一个教育问题 - 检查这种方法的可能性。在应用程序中处理它需要检查 [NSString isNotNullOrEmpty] 我在应用程序中使用来自 api 的数据设置的每个标签,相信我这个应用程序真的很大。所以问题是:上述问题是否可能,或者你知道在整个应用程序中处理它而不处理这么多 if() 案例的更好方法吗?
  • 是的,当然可以在NSDictionaryValueTransformer 上放置一个类别,过滤掉NSNull 并用@"" 替换它们。

标签: ios objective-c nsstring jsonmodel


【解决方案1】:

得到响应后,使用响应字典及其键运行以下循环。

for (id dictionary in [[responseDictionary valueForKey:@"responseKey"] allKeys] )
    {
           ([[responseDictionary valueForKey:@"responseKey"] valueForKey:dictionary] == [NSNull null]) ? [[responseDictionary valueForKey:@"responseKey"] setValue:@"" forKey:dictionary] :[[responseDictionary valueForKey:@"responseKey"] setValue:[[responseDictionary valueForKey:@"responseKey"] valueForKey:dictionary] forKey:dictionary];
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2020-06-20
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多