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 的响应从NSNull
s 转换为空的 @""
,不如在您的应用程序中处理 nil
的情况?在 Obj-C 中使用 nil
并不是什么新鲜事在我看来,当字符串属性没有值时返回 NSNull
的 API 是正确的做法。
首先,我试图从 ValueTransformer 方面将其作为一个教育问题 - 检查这种方法的可能性。在应用程序中处理它需要检查 [NSString isNotNullOrEmpty] 我在应用程序中使用来自 api 的数据设置的每个标签,相信我这个应用程序真的很大。所以问题是:上述问题是否可能,或者你知道在整个应用程序中处理它而不处理这么多 if() 案例的更好方法吗?
是的,当然可以在NSDictionary
或ValueTransformer
上放置一个类别,过滤掉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 转换为空字符串的主要内容,如果未能解决你的问题,请参考以下文章
在目标 c 中使用 jsonModel 映射时将默认值设置为空字段
iOS/Objective-C:将 NSString 对象添加到 NSMutableArray,NSMutableArray 为 (null)