swift3 – 在Swift 3中设置URL资源值
我试图将Apple的
“ShapeEdit”示例转换为Swift 3,我无法理解对URL的setResourceValue的更改.
Apple(Swift 2)示例包含以下代码: // Coordinate reading on the source path and writing on the destination path to copy. let readIntent = NSFileAccessIntent.readingIntentWithURL(templateURL,options: []) let writeIntent = NSFileAccessIntent.writingIntentWithURL(target,options: .ForReplacing) NSFileCoordinator().coordinateAccessWithIntents([readIntent,writeIntent],queue: self.coordinationQueue) { error in if error != nil { return } do { try fileManager.copyItemAtURL(readIntent.URL,toURL: writeIntent.URL) try writeIntent.URL.setResourceValue(true,forKey: NSURLHasHiddenExtensionKey) NSOperationQueue.mainQueue().addOperationWithBlock { self.openDocumentAtURL(writeIntent.URL) } } catch { fatalError("Unexpected error during trivial file operations: (error)") } } setResourceValue(value:forKey :)似乎已被setResourceValues()取代,但我无法设置它.到目前为止我所拥有的是: let readIntent = NSFileAccessIntent.readingIntent(with: templateURL,options: []) let writeIntent = NSFileAccessIntent.writingIntent(with: target,options: .forReplacing) NSFileCoordinator().coordinate(with: [readIntent,queue: self.coordinationQueue) { error in if error != nil { return } do { try fileManager.copyItem(at: readIntent.url,to: writeIntent.url) var resourceValues: URLResourceValues = URLResourceValues.init() resourceValues.hasHiddenExtension = true // *** Error on next line *** try writeIntent.url.setResourceValues(resourceValues) // Cannot use mutating member on immutable value: 'url' is a get-only property OperationQueue.main.addOperation { self.openDocumentAtURL(writeIntent.URL) } } catch { fatalError("Unexpected error during trivial file operations: (error)") } } 除了Xcode“跳转到定义”之外,我找不到任何文档
有没有人对setResourceValue(s)的变化有任何了解? 解决方法
NSFileAccessIntent.URL的当前声明是
public var url: URL { get } 这是一个只读属性. 由于Swift 3 URL是一个结构,因此您不能对从getter返回的不可变值调用mutating方法.要修改URL,首先将其分配给var. var url = intent.URL url.setResourceValues(...) 然后从修改后的URL中创建一个新意图. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |