Qual é a maneira mais simples para analisar arquivos binários em Cocoa Touch?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

dizer que tenho um arquivo binário (gerado com Java) contendo um valor int de 32 bits. Atualmente estou usando o seguinte código Objective-C para analisá-lo:

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];

A minha primeira pergunta é perguntar se é a maneira comum de fazer as coisas no iPhone porque eu não encontrar nada perto de DataInputStream de Java.

A minha segunda pergunta está relacionada com a linha de código com um memcpy. Eu não undestand por parte seguinte (mais elegante, menos "baixo nível") não está funcionando em vez disso:

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

Estou recebendo um aviso na compilação:

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

Em execução, estou ficando:

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

Solução

Para a última pergunta, use getBytes (maiúsculas B).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top