data iphone split nsdata

data iphone



Dividir objetos NSData en otros objetos NSData de un tamaƱo dado (1)

Tengo un objeto NSData de aproximadamente 1000kB de tamaño. Ahora quiero transferir esto a través de Bluetooth. Sería mejor si tuviera, digamos, 10 objetos de 100kB. Me viene a la mente que debería usar el método -subdataWithRange: de NSData.

Realmente no he trabajado con NSRange. Bueno, sé cómo funciona, pero no puedo averiguar cómo leer desde una ubicación determinada con la longitud: ''hasta el final del archivo'' ... No tengo idea de cómo hacerlo.

Algún código sobre cómo dividir esto en múltiples objetos NSData de 100kB realmente me ayudaría aquí. (probablemente involucre el método de -length para ver cuántos objetos deben hacerse ...)

Gracias de antemano.


El siguiente fragmento de código realiza la fragmentación sin copiar los datos:

NSData* myBlob; NSUInteger length = [myBlob length]; NSUInteger chunkSize = 100 * 1024; NSUInteger offset = 0; do { NSUInteger thisChunkSize = length - offset > chunkSize ? chunkSize : length - offset; NSData* chunk = [NSData dataWithBytesNoCopy:(char *)[myBlob bytes] + offset length:thisChunkSize freeWhenDone:NO]; offset += thisChunkSize; // do something with chunk } while (offset < length);

myBlob al myBlob : Debo agregar que los objetos de trozos no se pueden usar de manera segura después de que myBlob se haya liberado (o se haya modificado). chunk fragmentos apuntan a la memoria de myBlob , así que no los myBlob menos que conserves myBlob .