我有代码来检索URL的ubiquitousItemDownloadingStatus资源值:
do {
let resourceValues = try item.url.resourceValues(forKeys: [URLResourceKey.ubiquitousItemDownloadingStatusKey]
} catch {
print(error.localizedDescription)
}
但是,我不知道如何处理价值。我可以使用以下代码访问资源值:
do {
let resourceValues = try item.url.resourceValues(forKeys: [URLResourceKey.ubiquitousItemDownloadingStatusKey])
resourceValues.ubiquitousItemDownloadingStatus // ???
} catch {
print(error.localizedDescription)
}
但是我不确定之后该怎么办。 Foundation Library中资源值的声明是一个结构,如下所示:
public struct URLUbiquitousItemDownloadingStatus : Hashable, Equatable, RawRepresentable {
public init(rawValue: String)
}
extension URLUbiquitousItemDownloadingStatus {
@available(iOS 7.0, *)
public static let notDownloaded: URLUbiquitousItemDownloadingStatus
@available(iOS 7.0, *)
public static let downloaded: URLUbiquitousItemDownloadingStatus
@available(iOS 7.0, *)
public static let current: URLUbiquitousItemDownloadingStatus
}
我很困惑,因为我希望得到一个枚举。
如果有人可以帮助我澄清一下,请多多关照。
最佳答案
不要激动;它对我不起作用,但这是我尝试过的方法:
我已将访问权限包装到var
中...
var ubiquityDownloadStatus: URLUbiquitousItemDownloadingStatus? {
get {
do {
let keyValues = try rootURL.resourceValues(forKeys: [.ubiquitousItemIsDownloadingKey])
return keyValues.ubiquitousItemDownloadingStatus
} catch {
os_log("Error checking download status of %s", log: .default, type: .error, rootURL.lastPathComponent)
}
return nil
}
}
...然后按以下方式使用它:
private func statusImage(forNode node: DirectoryNode) -> NSImage? {
if !node.isUbiquitousItem { return nil }
let status = node.ubiquityDownloadStatus
switch status {
case URLUbiquitousItemDownloadingStatus.current:
return NSImage(named: NSImage.statusAvailableName)
case URLUbiquitousItemDownloadingStatus.downloaded:
return NSImage(named: NSImage.statusPartiallyAvailableName)
case URLUbiquitousItemDownloadingStatus.notDownloaded:
return NSImage(named: NSImage.statusUnavailableName)
default:
return NSImage(named: NSImage.statusNoneName)
}
}
...但是结果我总是回到
nil
。我尝试将iCloud权利添加到我的应用中没有任何效果。接下来,我正在研究这个替代解决方案,无论如何它可能更适合我的需求。
Cocoa - How to detect change in ubiquity container
关于ios - 如何访问ubiquitousItemDownloadingStatus资源值的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52496654/