【发布时间】:2011-08-06 14:23:56
【问题描述】:
我想从我定义的自定义文件“player.geo”中一一读取一些浮点值。
player.geo 是我使用 Xcode 4 创建的文件(“文件”>“新建”菜单中的“空文件”)
我目前正在尝试这样做:
- (id) initWithGeometryFile:(NSString *) nameOfFile
{
NSFileHandle *geoFile = NULL;
NSString *geoFilePath = [[NSBundle mainBundle] pathForResource:@"player" ofType:@"geo"];
geoFile = [NSFileHandle fileHandleForReadingAtPath:geoFilePath];
if(geoFile == NULL)
{
NSLog(@"Failed to open file.");
}
else
{
NSLog(@"Opening %@ successful", nameOfFile);
NSMutableData *fileData = [[NSMutableData alloc] initWithData:[geoFile readDataOfLength:4]];
float firstValue;
[fileData getBytes:&firstValue length:sizeof(float)];
NSLog(@"First value in file %@ is %f", nameOfFile, firstValue);
}
return self;
}
我没有得到 -64.0 的预期值,而是得到了 0.0。
这是正确的做法吗?
我真的必须将文件作为字符串读取,然后解析字符串内容以获得浮点值吗?
【问题讨论】:
-
请同时显示您用于将该值写入文件的代码。
-
我没有使用代码将数据写入文件。我只是手动将数字输入到 Xcode 中的文件中。我右键单击我的“几何”文件夹并转到新建文件,单击 Mac OS X 模板部分下的“其他”选项并选择“空”。然后我开始输入一些数字并保存文件。
-
啊,是的,那是你的问题。这不会读取看起来像数字的“文本”数据;它将字节本身解释为浮点数据。您应该将其作为文本阅读,然后处理该文本(NSScanner 等)
-
=/ 呸!我害怕它把它当作文本。感谢您的回答并指出我正确的方式(NSScanner)
标签: objective-c floating-point nsfilehandle