我正在尝试使用以下代码读取COLLADA文件(xml格式,utf-8编码):
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"astroBoy_walk_Max" ofType:@"dae"];
NSError *error;
NSString *xmlContent = [NSString stringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncoding error:&error];
返回的xmlContent为nil且错误为@" NSCocoaErrorDomain" - 代码:261。
然后我尝试使用其他编码,例如NSASCIIStringEncoding
,xmlContent不是nil但包含字符串"bplist00Ô\x01\x02\x03\x04\x05\x06\a\bZzippedData_\x10\x1creaderMinimumRequiredVersionVzippedWversionO\x12..."
,显然不是原始文件内容。
后来我将文件的扩展名重命名为dat
,并使用几乎相同的代码阅读:
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"astroBoy_walk_Max" ofType:@"dat"];
NSError *error;
NSString *xmlContent = [NSString stringWithContentsOfFile:xmlPath encoding:NSASCIIStringEncoding error:&error];
一切看起来都不错,xmlContent包含正确的文件内容字符串......
当我阅读原始.dae文件时有什么问题?
答案 0 :(得分:1)
collada文件在编译时压缩
当您在Collada或Alembic格式中包含场景文件时 Xcode项目,Xcode自动将文件转换为SceneKit 压缩的场景格式,用于构建的应用程序。压缩文件 保留其原始的.dae或.abc扩展名。
如果您打开应用包并将collada文件作为文字阅读,您会发现它与您添加到项目中的文件不同