2012-01-20 13 views
24

Tengo un tipo original NSData que contiene digamos 100 bytes. Quiero obtener otros 2 tipos de NSData. El primero contiene los primeros 20 bytes de los 100 y el segundo que contiene los otros 80. Se deben copiar del original NSData. Lo siento si no estaba tan claro, pero soy bastante nuevo con Objective-C.Copie una parte de la matriz de bytes NSData a otro tipo NSData

+0

use 'NSData''s '- (NSData *) subdataWithRange: (NSRange) rango;' –

Respuesta

57

Puede usar NSData 's -(NSData *)subdataWithRange:(NSRange)range; para hacer eso.
de su ejemplo, he aquí algo de código:

// original data in myData 
NSData *d1 = [myData subdataWithRange:NSMakeRange(0, 20)]; 
NSData *d2 = [myData subdataWithRange:NSMakeRange(20, 80)]; 

Por supuesto, los rangos son inmediatas aquí, es probable que tenga que hacer cálculos, para hacer que funcione para su código real.

+0

Gracias Vince, ¡eres tan útil para mí! – Mateo

2
NSData *mainData = /*This is you actual Data*/ 

    NSData *fPart = [mainData subdataWithRange:NSMakeRange(0, 20)]; 
    NSData *sPart = [mainData subdataWithRange:NSMakeRange(20, 80)]; 

lugar 80 se pueden utilizar algunas dinámico - como Lenth datos

+1

¿Por qué no obtendría 20-79? ¿Estás seguro? –

+1

@AlBeebe No te preocupes ... Estoy seguro de que he hecho lo mismo más de una vez, y el hecho de que hayas notado significa que es hora de limpiar los comentarios obsoletos de todos modos. Aclamaciones. – Caleb

2

Swift 3

let subdata1 = data?.subdata(in: 0..<20) 
let subdata2 = data?.subdata(in: 20..<80) 

Debido a esto es cuestión está en lo más alto de búsqueda de Google y quisiera escribir aquí una ejemplo para swift