Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.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
Ios 将CGPoints的NSArray转换为NSData块_Ios_Objective C_Nsarray_Nsdata_Cgpoint - Fatal编程技术网

Ios 将CGPoints的NSArray转换为NSData块

Ios 将CGPoints的NSArray转换为NSData块,ios,objective-c,nsarray,nsdata,cgpoint,Ios,Objective C,Nsarray,Nsdata,Cgpoint,我正在尝试将CGPoints的NSArray转换为NSData。我不知道怎么做 据 因此,使用CGPoints的NSArray,我不知道如何转换为NSData 一种方法是将点转换为C数组,然后从中生成一个NSData: NSMutableArray *array = [NSMutableArray array]; [array addObject:[NSValue valueWithCGPoint:pt1]]; [array addObject:[NSValue valueWithCGPoint

我正在尝试将
CGPoints
NSArray
转换为
NSData
。我不知道怎么做


因此,使用
CGPoint
s的
NSArray
,我不知道如何转换为
NSData

一种方法是将点转换为C数组,然后从中生成一个
NSData

NSMutableArray *array = [NSMutableArray array];
[array addObject:[NSValue valueWithCGPoint:pt1]];
[array addObject:[NSValue valueWithCGPoint:pt2]];
size_t total = sizeof(CGPoint)*array.count;
CGPoint *buf = malloc(total);
CGPoint *ptr = buf;
for (NSValue *v in array) {
    *ptr = v.CGPointValue;
}
NSData *res = [NSData initWithBytesNoCopy:buf length:total];
你可以试试:

    NSData * d = [NSData dataWithBytes:&tests[0] length:16] ;
然后:

    [d getBytes:&recovered[0] length:16] ;
例如:

    CGPoint tests[] = {
        {10.0f, 20.0f}
    ,   {20.0f, 30.0f}
    } ;
    // 2 points each with 2 floats = 4 values of 4 bytes each = 16 bytes
    NSData * d = [NSData dataWithBytes:&tests[0] length:16] ;
    NSLog(@"NSData: %@", d) ;

    CGPoint recovered[2] ;
    [d getBytes:&recovered[0] length:16] ;
    NSLog(@"P1: %@, P2: %@", NSStringFromCGPoint(recovered[0]), NSStringFromCGPoint(recovered[1])) ;
这可能是最直接的方法

这张照片是:

2013-09-10 04:05:24.468 SoloTouch[55207:c07] NSData: <00002041 0000a041 0000a041 0000f041>
2013-09-10 04:05:43.566 SoloTouch[55207:c07] P1: {10, 20}, P2: {20, 30}
2013-09-10 04:05:24.468 SoloTouch[55207:c07]NSData:
2013-09-10 04:05:43.566 SoloTouch[55207:c07]P1:{10,20},P2:{20,30}

我想看看你在哪里做了一系列CG点的代码。大概它们是被包装的,比如NSValues?
2013-09-10 04:05:24.468 SoloTouch[55207:c07] NSData: <00002041 0000a041 0000a041 0000f041>
2013-09-10 04:05:43.566 SoloTouch[55207:c07] P1: {10, 20}, P2: {20, 30}