CFPropertyListCreateDeepCopy fails to process array / dictionary containing NSNull
来源:互联网 发布:js 转换为数字 编辑:程序博客网 时间:2024/05/16 10:41
For some reason this sample code works:
NSArray *immutable = @[ @"a", @"b", @"c" ];NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
and this code produces nil
as a result of the conversion:
NSArray *immutable = @[ @"a", [NSNull null], @"c" ];NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
I tried to find any mention of NSNull
not being allowed when using this function. I have a suspicion that it has something to do with the way method examines whether property is mutable or not, but I can't really back that up with facts.
Any ideas?
1 Answer
As kind people from apple developer forum pointed out the issue is that Property List Structure is rather strict about data types it can work with. NSNull
is not one of allowed ones.
From apple docs:
Property lists are constructed from the basic Core Foundation types
CFString
,CFNumber
,CFBoolean
,CFDate
, andCFData
.
转载:http://stackoverflow.com/questions/12159205/cfpropertylistcreatedeepcopy-fails-to-process-array-dictionary-containing-nsnu
转换代码记录备份。注意:如果数据中有null,转换会返回nil
// NSArray --->>> NSMutableArray
NSMutableArray *mutableArray = CFBridgingRelease(CFPropertyListCreateDeepCopy(NULL, (__bridge CFPropertyListRef)(arrayData), kCFPropertyListMutableContainersAndLeaves));
NSMutableDictionary *mutableDict = (NSMutableDictionary *)CFBridgingRelease(CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFPropertyListRef)(dictData), kCFPropertyListMutableContainersAndLeaves));
- CFPropertyListCreateDeepCopy fails to process array / dictionary containing NSNull
- The next person who fails to adhere to this process(SDLC) will depart.
- ClickOnce fails to deploy
- You’re given an array containing both positive and negative integers and required to find the sub-a
- swift-array-dictionary
- 001:Why is it faster to process a sorted array than an unsorted array?
- Why is it faster to process a sorted array than an unsorted array?
- js Array to C# List<Dictionary>(js 传参 自定义类列表 到C#)
- IOS [NSNull objectForKey:]: unrecognized selector sent to [NSNull null]
- JSon 与 Array Dictionary 转化
- List Array Dictionary的使用
- mantle的Array与dictionary
- Convert dictionary values into array
- Swift4.0 guard,Array,Dictionary
- What to do when apt-get fails
- 11gR2 Grid infrastructure fails to install
- [WEBGL] CREATEPRIMITIVE FAILS TO CREATE REQUIRED COMPONENTS
- Fails to build with protobuf 2.6.0
- 远程连接
- Android下的intent机制
- poj 1293 Duty Free Shop
- Hexo博客搭建
- android init.rc
- CFPropertyListCreateDeepCopy fails to process array / dictionary containing NSNull
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- 通过UIWindow的方法取消键盘
- GSM模块信号强度CSQ与RSSI的对应关系,新增android的ASU
- ViewPage+Fragment+indicator+Tabhost效果
- fclose(stdout)和close(1)的区别
- Java date日期操作
- Bitmap详解
- 多态、继承---常量的覆盖和方法的重写