0

我正在尝试检查 FileAttributeType。这是我比较的逻辑:-

let attributes = try fileManager.attributesOfItem(atPath: "/Users/AUSER/Desktop/Downloads")
            print(attributes)

            if (attributes[FileAttributeKey.type] as AnyObject? == FileAttributeType.typeSymbolicLink ){
                print("YESSS \(attributes[FileAttributeKey.type])")
            }

错误-> 二元运算符“==”不能应用于“AnyObject?”类型的操作数 和“文件属性类型”

4

1 回答 1

0

(大)错误是你投射了一个非常具体的类型

static let type: FileAttributeKey

对应的值是一个String对象

到一个非常不具体的类型AnyObjectAnyObject无法比较。


将类型转换为String并与原始值进行比较FileAttributeType

if attributes[FileAttributeKey.type] as? String == FileAttributeType.typeSymbolicLink.rawValue {

旁注:强烈建议始终使用 URL 而不是字符串路径,并直接从URL

let url = URL(fileURLWithPath: "/Users/AUSER/Desktop/Downloads")
if let resourceValues = try? url.resourceValues(forKeys: [.fileResourceTypeKey]),
    resourceValues.fileResourceType! == .symbolicLink {
    print("YESSS \(resourceValues.fileResourceType!.rawValue)")
}
于 2018-09-04T16:35:39.337 回答