Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CFArray到NSData到NSImage_Objective C_Xcode_Macos_Nsdata_Nsimage - Fatal编程技术网

Objective c CFArray到NSData到NSImage

Objective c CFArray到NSData到NSImage,objective-c,xcode,macos,nsdata,nsimage,Objective C,Xcode,Macos,Nsdata,Nsimage,我有一个包含jpeg图片数据的plist文件。我需要把那张照片拿出来。我可以将plist文件读入NSDictionary,并可以在“jpegphoto”键处访问对象。问题是返回的对象是一个我不知道如何处理的NSFarray。我可以把它打印出来,我看到一个很好的八位字节流出来,但这就是我所知道的。如何将此NSFarray放入NSData或字节数组 CFArray在像这样传递到NSLog时 NSLog(@"%@", [plistDictionary objectForKey:@"jpegphoto"

我有一个包含jpeg图片数据的plist文件。我需要把那张照片拿出来。我可以将plist文件读入NSDictionary,并可以在“jpegphoto”键处访问对象。问题是返回的对象是一个我不知道如何处理的NSFarray。我可以把它打印出来,我看到一个很好的八位字节流出来,但这就是我所知道的。如何将此NSFarray放入NSData或字节数组

CFArray在像这样传递到NSLog时

NSLog(@"%@", [plistDictionary objectForKey:@"jpegphoto"]);
吐出数百行类似于

5ed15ee6 df44b2ff 00899699 0dd23b58 dccdcadc 6c8d04e1 8b3e1940 af76953e 7c0e1b56 
我知道这是我做的CFB/c阵列

NSLog(@"%@", NSStringFromClass([[data_dictionary objectForKey:@"jpegphoto"] class]));
回来了

NSCFArray

谢谢

我能想到的就是:

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 ) ) ;

在这两种情况下,您的数据都在“数据”中。(一个NS/CFData)NSCFArray==NSArray==CFArrayRef。