Aus irgendeinem Grund dieser Beispielcode funktioniert zu verarbeiten:CFPropertyListCreateDeepCopy versagt Array/Wörterbuch enthält NSNull
NSArray *immutable = @[ @"a", @"b", @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
und dieser Code erzeugt nil
als Ergebnis der Umwandlung:
NSArray *immutable = @[ @"a", [NSNull null], @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
Ich habe versucht, zu finden jede Erwähnung von ist nicht erlaubt, wenn diese Funktion verwendet wird. Ich habe den Verdacht, dass es etwas damit zu tun hat, wie die Methode untersucht, ob Eigentum veränderbar ist oder nicht, aber ich kann das nicht mit Fakten untermauern.
Irgendwelche Ideen?
Kennen Sie eine Alternative oder eine Problemumgehung, um einen Nullwert zu akzeptieren, weil wir dies auf Daten von einer JSON-API verwenden, die an einigen Stellen "null" hat? – Sathvik
nach dieser Quelle http://www.opensource.apple.com/source/CF/CF-1153.18/CFPropertyList.c (Suche nach CFPropertyListRef CFPropertyListCreateDeepCopy) ist es nicht ganz möglich. Versuchen Sie vielleicht, null durch eine vordefinierte Konstante zu ersetzen, die in Ihrem Datensatz wahrscheinlich nicht vorkommt. –