我有一个带有jpeg照片数据的plist文件。我需要把那张照片拿出来。我可以将plist文件读入NSDictionary,并可以通过键“jpegphoto”访问该对象。问题是返回的对象是NSCFArray,我不知道如何使用。我可以打印它,我看到一个很好的八位字节流出来,但这就是我知道该怎么做。如何将此NSCFArray转换为NSData或字节数组?
CFArray传递给NSLog时如此
NSLog(@"%@", [plistDictionary objectForKey:@"jpegphoto"]);
吐出类似于
的数百行5ed15ee6 df44b2ff 00899699 0dd23b58 dccdcadc 6c8d04e1 8b3e1940 af76953e 7c0e1b56
我知道这是我做过的CFArray b / c
NSLog(@"%@", NSStringFromClass([[data_dictionary objectForKey:@"jpegphoto"] class]));
然后回来了
NSCFArray
由于
答案 0 :(得分:0)
我能想到的就是这个:
NSArray * array = [ data_dictionary valueForKey:@"jpegphoto" ] ;
NSMutableData * data = [ NSMutableData dataWithCapacity:array.count * 4 ] ;
uint32_t * dataPtr = [ data mutableBytePtr ] ;
NSUInteger index = 0 ;
for( NSNumber * number in array )
{
dataPtr[ index++ ] = [ number unsignedLongValue ] ;
}
假设数组中充满了CF / NSNumber实例。 如果它是原始(非对象)值的CFArray,请尝试这样的事情:
CFArrayRef array = (CFArrayRef)[ data_dictionary valueForKey:@"jpegphoto" ] ;
CFDataRef data = CFDataCreateMutable( kCFAllocatorDefault, CFArrayGetCount( array ) * 4 ) ;
CFArrayGetValues( array, (CFRange){ 0, CFArrayGetCount( array ) }, (void**)CFDataGetMutableBytePtr( data ) ) ;