【发布时间】:2018-04-02 21:58:52
【问题描述】:
目前我正在尝试在单元测试期间创建文件,以查看是否可以在创建数据后检索数据,但 fileManager.createFileAtPath 总是失败。我看了这篇文章:fileManager.createFileAtPath always fails 我实现了该答案的解决方案,但仍然失败。这是单元测试和附带函数的样子:
internal func getCacheFolderPath() -> String {
var folderPath = ""
guard let path = self.urls(for:.cachesDirectory , in: .userDomainMask).last?.path else {
return folderPath
}
folderPath = path + "/NetworkCache"
if !self.fileExists(atPath: folderPath) {
do {
try self.createDirectory(atPath: folderPath, withIntermediateDirectories: false, attributes: nil)
} catch {
print(error.localizedDescription)
}
}
return folderPath
}
func test_createFile(){
let path = sut?.getCacheFolderPath()
let fileManager = FileManager.default
if !FileManager.default.fileExists(atPath: path!) {
do {
try FileManager.default.createDirectory(atPath: path!, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
print(error.localizedDescription)
}
}
let isFileCreated = fileManager.createFile(atPath: path!, contents: mockData, attributes: nil)
print(isFileCreated)//This always returns false
}
【问题讨论】:
-
哪条线失败了?错误是什么?
-
@rmaddy 不是有错误,而是文件从未创建并返回 false。我正在尝试让它创建文件并返回 true。
-
path的实际值是多少?为什么不使用Data write(to:)而不是FileManager createFile?然后你就可以看到它失败的原因了。 -
@rmaddy 失败的原因是它说文件或文件夹不存在。但应该是因为目录是在创建文件之前先创建的,
-
@rmaddy data.write(to:) 是一个很好的电话。有一个错误 NSError 域:“NSCocoaErrorDomain” - 代码:512,我正在调查它。
标签: ios swift caching nsfilemanager