读取xml文件时得到NSCocoaErrorDomain代码= 261

时间:2014-11-13 02:39:14

标签: ios xml encoding bundle

我正在尝试使用以下代码读取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文件时有什么问题?

1 个答案:

答案 0 :(得分:1)

collada文件在编译时压缩

  

当您在Collada或Alembic格式中包含场景文件时   Xcode项目,Xcode自动将文件转换为SceneKit   压缩的场景格式,用于构建的应用程序。压缩文件   保留其原始的.dae或.abc扩展名。

来自Apple Documentation

如果您打开应用包并将collada文件作为文字阅读,您会发现它与您添加到项目中的文件不同