¿Cuál es la forma más sencilla de analizar archivos binarios en Cocoa Touch?

StackOverflow https://stackoverflow.com/questions/402555

  •  03-07-2019
  •  | 
  •  

Pregunta

Supongamos que tengo un archivo binario (generado con Java) que contiene un valor int de 32 bits. Actualmente estoy usando el siguiente código de Objective-C para analizarlo:

NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"dat"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];

unsigned long intValue;
memcpy(&intValue, [[file readDataOfLength:4] bytes], 4);
intValue = NSSwapBigLongToHost(intValue);

[file closeFile];

Mi primera pregunta es preguntar si es la forma común de hacer las cosas en el iPhone porque no encontré nada cerca de DataInputStream de Java.

Mi segunda pregunta está relacionada con la línea de código con un memcpy. No entiendo por qué la siguiente parte (más elegante, menos " nivel bajo ") no funciona en su lugar:

[[file readDataOfLength:4] getbytes:&intValue];

Me aparece una advertencia en la compilación:

'NSData' may not respond to '-getbytes:'

En la ejecución, estoy recibiendo:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
¿Fue útil?

Solución

Para la última pregunta, use getBytes (mayúscula B).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top