无论如何从“createFileAtPath”获取更详细的错误数据我有点期待NSError吗?目前我正在使用BOOL返回值。
success = [fileMan createFileAtPath:fileOnDisk contents:dBuffer attributes:nil];
if(success == YES) NSLog(@"FileCreated");
else {
NSLog(@"ERROR: Failed to create file");
return 1;
}
加里
答案 0 :(得分:54)
我同意......我希望有一个接受NSError的功能!
在这种情况下返回的错误通常是errno.h
中声明的POSIX错误之一(errno
会自动包含在Cocoa或Foundation标题中。)
要查看错误,请使用strerror
中的errno.h
函数并引用全局errno
整数,该问题出现时由低级POSIX io函数设置:< / p>
if (![fm createFileAtPath:@"/etc/foobar.txt" contents:data attributes:nil])
{
NSLog(@"Error was code: %d - message: %s", errno, strerror(errno));
}
// output will be: Error was code: 13 - message: Permission denied
错误代码常量列表列在Error Handling Programming Guide for Cocoa中(除了errno.h标题本身)。
答案 1 :(得分:9)
你不应该使用那种方法;他们忘了将它放在主文档(!)中,但如果您阅读Apple头文件,则会发现此评论:
/ *这里提供了这些方法以实现兼容性。相应的 返回NSErrors的NSData上的方法应该被认为是 从NSData创建文件或检索文件的主要方法 作为NSData的文件的内容。 * /
所以,相反,Apple希望你使用它(从测试开始,它看起来功能完全相同 - 除了它位于一个奇怪的类,你从来没有想过去寻找它(我想创建一个)空文件...所以我必须...实例化一个nil NSData对象?什么?)它有一个NSError对象):