如果任何值为 NULL,CFPropertyListCreateDeepCopy 将返回 nil
Posted
技术标签:
【中文标题】如果任何值为 NULL,CFPropertyListCreateDeepCopy 将返回 nil【英文标题】:CFPropertyListCreateDeepCopy returns nil if any value is NULL 【发布时间】:2016-03-17 03:16:02 【问题描述】:我正在使用以下CoreFoundation
函数CFPropertyListCreateDeepCopy:
用于将不可变对象转换为可变对象。如果任何对象为 NULL,则 CFPropertyListCreateDeepCopy
返回空。是否有任何解决方法。
self.packageArray = CFBridgingRelease(CFPropertyListCreateDeepCopy(NULL, (CFPropertyListRef)self.packageArray , kCFPropertyListMutableContainersAndLeaves));
CFPropertyListCreateDeepCopy fails to process array / dictionary containing NSNull
示例代码
NSArray *immutable = @[ @"a", [NSNull null], @"c" ];
NSMutableArray *mutable = (__bridge
id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge
CFArrayRef)immutable, kCFPropertyListMutableContainers);
来自this link的示例json响应
提前致谢。
【问题讨论】:
你能提供一个最小的代码示例吗? 【参考方案1】:经过几个小时的解决方法,我已经通过以下方式解决了这个问题。
将 API 响应转换为 JSON 对象时只需放在下面一行。
responseString=[responseString stringByReplacingOccurrencesOfString:@"\":null" withString:@"\":\"\""];//To Handle Null Characters
//Search for below line in your parsing library and paste above code
data = [responseString dataUsingEncoding:NSUTF8StringEncoding];
因此您的 JSON 对象中不会有空字符,因此使用 CFPropertyListCreateDeepCopy
没有问题。
干杯!!
【讨论】:
以上是关于如果任何值为 NULL,CFPropertyListCreateDeepCopy 将返回 nil的主要内容,如果未能解决你的问题,请参考以下文章
如果使用角度js的任何属性的所有json值为null,如何隐藏表列
如果SQL Server CASE值为NULL,则不返回任何内容