使用Swift时我想检查一个NSURL位置是否是一个目录.使用Objective-C这不是一个问题和工作查找,但当我将代码转换为Swift时,我遇到运行时错误.
也许有人可以指出我正确的方向?
import Foundation
let defaultManager = NSFileManager.defaultManager()
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
let localDocumentURLs = defaultManager.contentsOfDirectoryAtURL(documentsDirectory,
includingPropertiesForKeys: nil, options: .SkipsPackageDescendants, error: nil) as NSURL[]
for url in localDocumentURLs {
var isError: NSError? = nil
var isDirectory: AutoreleasingUnsafePointer<AnyObject?> = nil
var success: Bool = url.getResourceValue(isDirectory, forKey: NSURLIsDirectoryKey, error: &isError)
}
Run Code Online (Sandbox Code Playgroud)
vad*_*ian 23
在iOS 9.0+和macOS 10.11+中,NSURL/中有一个属性URL
迅速:
var hasDirectoryPath: Bool { get }
Run Code Online (Sandbox Code Playgroud)
Objective-C的:
@property(readonly) BOOL hasDirectoryPath;
Run Code Online (Sandbox Code Playgroud)
hol*_*lex 14
我工作的报价很好:
var error: NSError?
let documentURL : NSURL = NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomain: NSSearchPathDomainMask.UserDomainMask, appropriateForURL: nil, create: true, error: &error)
var isDirectory: ObjCBool = ObjCBool(0)
if NSFileManager.defaultManager().fileExistsAtPath(documentURL.path, isDirectory: &isDirectory) {
println(isDirectory)
}
Run Code Online (Sandbox Code Playgroud)
注意:它检查 文件夹是否是Documents 文件夹.当然,你可以用任何东西替换URL.
小智 11
斯威夫特3
extension URL {
var isDirectory: Bool {
let values = try? resourceValues(forKeys: [.isDirectoryKey])
return values?.isDirectory ?? false
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13137 次 |
| 最近记录: |