Por alguna razón funciona este código de ejemplo:CFPropertyListCreateDeepCopy no puede procesar matriz/diccionario que contiene NSNull
NSArray *immutable = @[ @"a", @"b", @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
y este código produce nil
como resultado de la conversión:
NSArray *immutable = @[ @"a", [NSNull null], @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
He intentado encontrar cualquier mención de NSNull
no está permitida al usar esta función. Sospecho que tiene algo que ver con la forma en que el método examina si la propiedad es mutable o no, pero realmente no puedo respaldarlo con hechos.
¿Alguna idea?
¿Conoces una alternativa o alternativa para aceptar un valor nulo, porque estamos utilizando esto en datos de una API JSON que tiene 'null' en algunos lugares? – Sathvik
de acuerdo con esta fuente http://www.opensource.apple.com/source/CF/CF-1153.18/CFPropertyList.c (busque CFPropertyListRef CFPropertyListCreateDeepCopy) no es del todo posible. Tal vez intente reemplazar nulo con constante predefinida que es poco probable que se encuentre en su conjunto de datos. –