5

포함하는 배열/사전 처리에 실패CFPropertyListCreateDeepCopy이 샘플 코드가 작동하는 몇 가지 이유를 들어 NSNull

NSArray *immutable = @[ @"a", @"b", @"c" ]; 
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers); 

를이 코드는 변환의 결과로 nil을 생산 : 내가 찾으려고

NSArray *immutable = @[ @"a", [NSNull null], @"c" ]; 
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers); 

이 함수를 사용할 때 NSNull에 대한 언급이 허용되지 않습니다. 나는 그 방법이 부동산이 가변적인지 아닌지를 조사하는 방법과 관련이 있다는 의심을 가지고있다. 그러나 나는 사실을 사실로 뒷받침 할 수 없다.

아이디어가 있으십니까?

답변

6

Apple 개발자 포럼의 친절한 사람들은 문제가 될 수있는 속성 목록 구조가 작업 할 수있는 데이터 유형에 대해 다소 엄격하다는 점을 지적했습니다. NSNull은 허용 된 것이 아닙니다. apple docs에서

:

속성 목록은 기본 코어 재단 유형 CFString, CFNumber, CFBoolean, CFDateCFData로 구성된다.

+0

일부 값이 null 인 JSON API의 데이터에이 값을 사용하기 때문에 null 값을 허용하는 대체 방법이나 해결 방법이 있습니까? – Sathvik

+1

이 출처에 따라 http://www.opensource.apple.com/source/CF/CF-1153.18/CFPropertyList.c (CFPropertyListRef CFPropertyListCreateDeepCopy 검색)은 가능하지 않습니다. 어쩌면 데이터 세트에서 발생할 가능성이없는 미리 정의 된 상수로 null을 대체할까요? –