hpi*_*que 3 macos cocoa foundation
在Cocoa中删除文件(可能存在也可能不存在)的正确方法是什么?
如果我尝试删除不存在的文件,我会收到错误.然而,询问文件是否存在似乎是不鼓励的:
建议不要尝试基于文件系统的当前状态或文件系统上的特定文件来预测行为.这样做可能会导致奇怪的行为或竞争条件.尝试执行操作(例如加载文件或创建目录),检查错误以及优雅地处理这些错误要比尝试提前判断操作是否成功要好得多.
我目前正在做以下事情:
[[NSFileManager defaultManager] removeItemAtPath:filePath error:&error];
if (error.code != NSFileNoSuchFileError) {
NSLog(@"%@", error);
}
Run Code Online (Sandbox Code Playgroud)
我应该注意其他任何边境案件吗?
Pet*_*sey 13
在Cocoa中删除文件(可能存在也可能不存在)的正确方法是什么?
如果我尝试删除不存在的文件,我会收到错误.然而,询问文件是否存在似乎是不鼓励的:
建议不要尝试基于文件系统的当前状态或文件系统上的特定文件来预测行为.这样做可能会导致奇怪的行为或竞争条件.尝试执行操作(例如加载文件或创建目录),检查错误以及优雅地处理这些错误要比尝试提前判断操作是否成功要好得多.
正确的方法就是它所说的:尝试一下,看看你是否收到错误.
有些错误,特别是没有这样的文件,你可以忽略.其他人,您可能想尝试恢复 - 例如,如果错误与权限相关,您可能会尝试要求管理员权限.任何致命的东西,你应该呈现给用户.
我目前正在做以下事情:
Run Code Online (Sandbox Code Playgroud)[[NSFileManager defaultManager] removeItemAtPath:filePath error:&error]; if (error.code != NSFileNoSuchFileError) { NSLog(@"%@", error); }我应该注意其他任何边境案件吗?
是:
errornil当方法成功时,不保证设置为(或根本不设置).您应首先检查方法是否已失败,并且仅error在方法确实返回失败时才尝试使用.OSStatus.这就是为什么你需要比较两个域名和你的测试错误代码.defaultManager错误.创建自己的NSFileManager对象并使用该对象.presentError:消息(在主线程上,如果您还没有)在警报框中向用户报告.| 归档时间: |
|
| 查看次数: |
3271 次 |
| 最近记录: |