私はしばらくこの問題に取り組んできました.Macでアプリを実行しています.次のような構造体に座標データが保存されています.
struct xyz {
float x;
float y;
float z;
};
struct xy {
float x;
float y;
};
struct object {
struct xyz *myXYZ;
struct xy *myXY;
};
NSData
これはすべて期待どおりに機能し、構造体を次のように追加します。
struct object anInitialTestStruct;
NSMutableData *myTestDataOut = [NSMutableData dataWithBytes:&anInitialTestStruct length:64 freeWhenDone:NO];
BOOL good = [myTestDataOut writeToFile:[NSString stringWithFormat:@"%@/filename.dat", docsDirectory] atomically:YES];
これは期待どおりに機能し、ファイルを取得し、その中にデータがあるように見えます (参照用に、anInitialTestStruct にポインターと malloc を使用しましたが、それでも目的の結果が得られません)。
iPhone で、ファイルをプロジェクトにコピーし、次のようにします。
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"dat"];
NSData *myVecNSData = [[NSData alloc] initWithContentsOfFile:filePath options:NSDataReadingUncached error:&error];
if ( error ) {
NSLog(@"%@", error);
}
正しいデータが返ってきません。興味深いことにinitWithContents
、Mac でメソッドを実行してそこにあるファイルを読み取ると、問題ないように見えます。
だから私はiPhone / Macでファイルシステムを扱う方法が違うと思っています....を使用してデータをエンコードしようとしましたNSKeyedArchiver
が、「理解できないアーカイブ.....」という例外が発生します.