JsonModel NSString 将 null 转换为空字符串

Posted

技术标签:

【中文标题】JsonModel NSString 将 null 转换为空字符串【英文标题】:JsonModel NSString transform null to empty string 【发布时间】: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 并用@"" 替换它们。 【参考方案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];
    

【讨论】:

以上是关于JsonModel NSString 将 null 转换为空字符串的主要内容,如果未能解决你的问题,请参考以下文章

JSONModel 接受对象和字符串

在目标 c 中使用 jsonModel 映射时将默认值设置为空字段

iOS开发解决 jsonModel 属性跟系统的重复

如何使用 JSONModel 创建模型类?

JSONModel开发随想

iOS/Objective-C:将 NSString 对象添加到 NSMutableArray,NSMutableArray 为 (null)