如何阅读文件注释字段

pat*_*mar 4 macos objective-c swift

在OS X Finder中有"Comment"文件属性.可以在查找器中通过添加"注释"列进行检查,或者在右键单击文件或文件夹并选择"获取信息"后进行编辑/检查.

如何在swift或objective-c中读取此值?

我已经检查了NSURL,但似乎没有一个是正确的

Ken*_*ses 5

请勿使用低级扩展属性API来读取Spotlight元数据.有适当的Spotlight API.(它被称为文件元数据API.)它不仅是一个痛苦的问题,也不能保证Apple将继续使用相同的扩展属性来存储这些信息.

使用MDItemCreateWithURL()创建MDItem的文件.使用MDItemCopyAttribute()kMDItemFinderComment获得该项目的查找评论.


Leo*_*bus 5

将这些部分放在一起(Ken Thomases 阅读上面的答案并编写答案链接),您可以使用带有 getter 和 setter 的计算属性扩展 URL,以读取/写入文件的注释:

更新:Xcode 8.2.1 • Swift 3.0.2

extension URL {
    var finderComment: String? {
        get {
            guard isFileURL else { return nil }
            return MDItemCopyAttribute(MDItemCreateWithURL(kCFAllocatorDefault, self as CFURL), kMDItemFinderComment) as? String
        }
        set {
            guard isFileURL, let newValue = newValue else { return }
            let script = "tell application \"Finder\"\n" +
                String(format: "set filePath to \"%@\" as posix file \n", absoluteString) +
                String(format: "set comment of (filePath as alias) to \"%@\" \n", newValue) +
            "end tell"
            guard let appleScript = NSAppleScript(source: script) else { return }
            var error: NSDictionary?
            appleScript.executeAndReturnError(&error)
            if let error = error {
                print(error[NSAppleScript.errorAppName] as! String)
                print(error[NSAppleScript.errorBriefMessage] as! String)
                print(error[NSAppleScript.errorMessage] as! String)
                print(error[NSAppleScript.errorNumber] as! NSNumber)
                print(error[NSAppleScript.errorRange] as! NSRange)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)