Moe*_*ars 30 nsfilemanager swift ios9
在iOS9之前,我们创建了一个类似的目录
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
let logsPath = documentsPath.stringByAppendingPathComponent("logs")
let errorPointer = NSErrorPointer()
NSFileManager.defaultManager().createDirectoryAtPath(logsPath, withIntermediateDirectories: true, attributes: nil, error: errorPointer)
Run Code Online (Sandbox Code Playgroud)
但是对于iOS9,他们删除了String.stringByAppendingPathComponent.自动转换工具取代了我们对NSURL使用String.createDirectoryAtPath()接受一个字符串,所以我需要将NSURL转换为字符串.我们像这样使用absolutePath :(更新为iOS9)
let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0])
let logsPath = documentsPath.URLByAppendingPathComponent("logs")
do {
try NSFileManager.defaultManager().createDirectoryAtPath(logsPath.absoluteString, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
无法创建目录错误Domain = NSCocoaErrorDomain Code = 513"您无权将文件"logs"保存在"Documents"文件夹中." UserInfo = {NSFilePath = file:/// var/mobile/Containers/Data/Application/F2EF2D4F-94AF-4BF2-AF9E-D0ECBC8637E7/Documents/logs /,NSUnderlyingError = 0x15664d070 {Error Domain = NSPOSIXErrorDomain Code = 1"不允许操作"}}
Moe*_*ars 86
我想出了这一个.createDirectoryAtPath()无法处理带有"file://"前缀的路径.要获取没有前缀的路径,必须使用path()或relativePath().
let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0])
let logsPath = documentsPath.URLByAppendingPathComponent("logs")
do {
try NSFileManager.defaultManager().createDirectoryAtPath(logsPath.path!, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
Run Code Online (Sandbox Code Playgroud)
路径不正确(通知文件://):
文件:/// VAR /移动/容器/数据/应用/ F2EF2D4F-94AF-4BF2-AF9E-D0ECBC8637E7 /文档/日志/
正确的道路:
的/ var /移动/容器/数据/应用/ F2EF2D4F-94AF-4BF2-AF9E-D0ECBC8637E7 /文档/日志/
小智 12
斯威夫特3
let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
let logsPath = documentsPath.appendingPathComponent("logs")
do {
try FileManager.default.createDirectory(at: logsPath!, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
NSLog("Unable to create directory \(error.debugDescription)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21728 次 |
| 最近记录: |