如果任何值为NULL,则CFPropertyListCreateDeepCopy返回nil

时间:2015-12-11 09:03:24

标签: ios objective-c arrays core-foundation

我正在使用以下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 个答案:

答案 0 :(得分:0)

经过几个小时的解决方法,我已经通过以下方式解决了这个问题。

将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时没有问题。

干杯!!