有没有办法在没有 shell命令的情况下读/写文件标签?已经尝试过NSFileManager和CG ImageSource类.到目前为止没有运气. NSURL对象具有密钥NSURLTagNamesKey的资源.该值是一个字符串数组. 这个Swift示
这个Swift示例读取标记,添加标记Foo并将标记写回.
let url = NSURL(fileURLWithPath: "/Path/to/file.ext") var resource : AnyObject? do { try url.getResourceValue(&resource, forKey: NSURLTagNamesKey) var tags : [String] if resource == nil { tags = [String]() } else { tags = resource as! [String] } print(tags) tags += ["Foo"] try url.setResourceValue(tags, forKey: NSURLTagNamesKey) } catch let error as NSError { print(error) }
Swift 3版本有点不同.在URL中,tagNames属性是get-only,因此有必要将URL转换为Foundation NSURL
var url = URL(fileURLWithPath: "/Path/to/file.ext") do { let resourceValues = try url.resourceValues(forKeys: [.tagNamesKey]) var tags : [String] if let tagNames = resourceValues.tagNames { tags = tagNames } else { tags = [String]() } tags += ["Foo"] try (url as NSURL).setResourceValue(tags, forKey: .tagNamesKey) } catch { print(error) }