【发布时间】:2015-07-31 10:13:41
【问题描述】:
我在应用程序的 Documents 文件夹的 viewDidLoad 中创建了一个目录。
NSString *localDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
self.projectsLocalPath = [localDirectory stringByAppendingPathComponent:@"Projects"];
if ([[NSFileManager defaultManager] fileExistsAtPath:self.projectsLocalPath] == NO) {
[[NSFileManager defaultManager] createDirectoryAtPath:self.projectsLocalPath withIntermediateDirectories:YES attributes:nil error:nil];
}
之后,我列出所有文件,以便它们出现在日志中,检查它是否是目录:
//----- LIST ALL FILES -----
NSArray *contentOfFolder = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:localDirectory error:nil];
for (NSString *aPath in contentOfFolder) {
NSString *fullPath = [localDirectory stringByAppendingPathComponent:aPath];
BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] && isDir) {
NSLog(@"%@ - IT IS A DIR", fullPath);
}
else {
NSLog(@"%@ - IT IS NOT A DIR", fullPath);
}
}
当我第一次运行应用程序时,日志文件列表如下所示:
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite - 它不是目录
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-shm - 它不是目录
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-wal - 它不是目录
/var/mobile/Containers/Data/Application/E3...94/Documents/Projects - 这是一个目录
一切都是正确的。但是以下运行在日志中显示 Projects 文件夹不再是目录。
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite - 它不是目录
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-shm - 它不是目录
/var/mobile/Containers/Data/Application/E3...94/Documents/Project.sqlite-wal - 它不是目录
/var/mobile/Containers/Data/Application/E3...94/Documents/Projects - 它不是目录
这就像它神奇地转换成一个文件......问题是当我想查看目录的内容时,我收到一个错误,说它不是一个目录。
我做错了吗?这个问题快把我逼疯了……
提前感谢大家的帮助。
编辑:
在第一次运行时,创建目录后,我会下载一些文件并使用保管箱 API 将它们保存到新创建的目录中:[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];。将文件保存到此目录时没有错误。
【问题讨论】:
-
第一次和第二次运行之间会发生什么?他们是独立的吗?结果是随机的?
-
@AminNegm-Awad 在第一次运行时,创建目录后,我会下载一些文件并使用 Dropbox API 将它们保存到新创建的目录中:
[self.restClient loadFile:plan.path intoPath:self.projectsLocalPath];。将文件保存到此目录时没有错误。 -
我创建了一个示例项目,将您的所有代码复制到了我的 viewDidLoad 中。每次在我的日志中显示为目录时,我都没有遇到任何问题!每次运行的目录 GUID 都会不同,但在你的情况下是相似的,为什么会这样?你在硬编码吗?
-
@KrLx_roller 你什么时候开始第二次跑步?下载文件后立即?
-
@AminNegm-Awad 我等待下载并保存三个文件。然后,我重新运行应用程序,它现在似乎是一个文件的目录。
标签: ios objective-c nsfilemanager