Đối với một số lý do mẫu mã này hoạt động:CFPropertyListCreateDeepCopy thất bại trong việc xử lý mảng/từ điển chứa NSNull
NSArray *immutable = @[ @"a", @"b", @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
và mã này tạo ra nil
như là kết quả của việc chuyển đổi:
NSArray *immutable = @[ @"a", [NSNull null], @"c" ];
NSMutableArray *mutable = (__bridge id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge CFArrayRef)immutable, kCFPropertyListMutableContainers);
Tôi cố gắng để tìm thấy bất kỳ đề cập đến của NSNull
không được phép khi sử dụng chức năng này. Tôi có một sự nghi ngờ rằng nó có liên quan đến cách thức kiểm tra xem liệu tài sản có thể thay đổi hay không, nhưng tôi không thể thực sự quay lại với sự thật.
Bất kỳ ý tưởng nào?
Bạn có biết cách thay thế hoặc giải pháp khác để chấp nhận giá trị không, bởi vì chúng tôi đang sử dụng dữ liệu này từ API JSON có 'null' ở một số địa điểm? – Sathvik
theo nguồn này http://www.opensource.apple.com/source/CF/CF-1153.18/CFPropertyList.c (tìm kiếm CFPropertyListRef CFPropertyListCreateDeepCopy) nó không hoàn toàn có thể. Có thể thử thay thế null bằng hằng số được xác định trước mà không có khả năng gặp phải trong tập dữ liệu của bạn? –