gpt4 book ai didi

ios - NSFileManager 的方法 createDirectoryAtPath 在 iOS 上返回错误结果

转载 作者:可可西里 更新时间:2023-11-01 05:45:37 27 4
gpt4 key购买 nike

当我尝试使用下面的代码创建一个文件夹时,当我尝试创建一个已经存在的文件夹而不是返回 YES 时,它返回 NO 并出错:

[[NSFileManager defaultManager] createDirectoryAtPath:[documentsPath stringByAppendingPathComponent:@"temp"] withIntermediateDirectories:NO attributes:nil error:&error];

Apple 的 documentation说:

Return Value
YES if the directory was created or already exists or NO if an error occurred.

所以我应该在成功或文件夹存在时得到 YES。但是当文件夹存在时我收到这条消息:

Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" UserInfo=0x200ef5f0 {NSFilePath=/var/mobile/Applications/DA657A0E-785D-49B4-9258-DF9EBAC5D52A/Documents/temp, NSUnderlyingError=0x200ef590 "The operation couldn’t be completed. File exists"}

这是一个错误并且应该报告给 Apple 还是我做错了什么?

最佳答案

[NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:] 如果文件存在且不是目录,则将失败。

所以前进的方向是如果目录已经存在就不要创建目录,如果目录存在但不是目录则抛出异常:

NSString *filename = [documentsPath stringByAppendingPathComponent:@"temp"];
NSFileManager *fileman = [NSFileManager defaultManager];
BOOL isDir = NO;
if (![fileman fileExistsAtPath:filename isDirectory:&isDir])
{
// Create the directory
}
else if (!isDir)
{
NSLog(@"Cannot proceed!");
// Throw exception
}

关于ios - NSFileManager 的方法 createDirectoryAtPath 在 iOS 上返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15245056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com