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
.