CFPropertyListCreateDeepCopy

CFPropertyListCreateDeepCopy

我正在使用以下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响应

提前致谢。

最佳答案

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

将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不会出现问题。

干杯!!

07-27 14:04