Frage

Sagen, ich habe eine binäre Datei (erzeugt mit Java) mit einem 32-Bit-int-Wert enthalten. Ich bin derzeit die folgenden Objective-C-Code verwenden es für die Analyse:

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

Meine erste Frage ist zu fragen, ob es der gemeinsame Weg, die Dinge auf dem iPhone zu tun, weil ich nicht alles in der Nähe von Java Datainputstream gefunden werden.

Die zweite Frage ist mit einem Memcpy auf die Codezeile verwendet. Ich weiß nicht, warum undestand der folgende Teil (elegantes, weniger „low-level“) nicht statt arbeiten:

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

Ich bin eine Warnung auf Build bekommen:

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

Bei der Ausführung, erhalte ich:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
War es hilfreich?

Lösung

Für die letzte Frage, verwendet getBytes (Groß B).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top