是否可以为未下载的 iCloud 文件访问正确的 URL.resourceValues? 问题我的尝试我在考虑什么

问题描述

问题

当为扩展名为 .fileSizeKey 的未下载的 iCloud 文件抓取 .localizedTypeDescriptionKey 上的 URL.resourceValues.icloud 时,我得到不正确的文件大小和描述被列为别名。

var url = URL(fileURLWithPath: "/.image.png.icloud")
var fileResources: URLResourceValues?

let keys: Set<URLResourceKey> = [.localizedTypeDescriptionKey,.fileSizeKey]

do {
    guard let resources = try url?.resourceValues(forKeys: keys) else { return }
    fileResources = resources
} catch {}

print(fileResources?.localizedTypeDescription) // Alias
print(fileResources?.fileSize) // 192 bytes (when it should be 4MB)

我的尝试

  1. 我尝试设置一个 NSFileCoordinator() 来请求文件的元数据,但没有奏效。
var error: NSError?
let coordinator = NSFileCoordinator(filePresenter: nil)
coordinator.coordinate(readingItemAt: url!,options: .immediatelyAvailableMetadataOnly,error: &error) { URL in
    do {
        let resources = try URL.promisedItemResourceValues(forKeys: [.fileSizeKey])
        print(resources.fileSize) // 192 bytes (file type reads as Alias too)
    } catch {}
}
  1. 我也尝试过 MDItem,它确实有效,但它不可靠,因为有时没有元数据(例如邮件文件),我不得不关闭沙盒才能使其正常工作。
let md = MDItemCreateWithURL(kcfAllocatorDefault,url! as CFURL) // nil if sandBox is enabled
let Meta = MDItemcopyAttribute(md,kMDItemFSSize)
print(Meta) // 4MB (correct size)
  1. 我还尝试使用 .image.png.icloud url 并尝试找到别名原始 url,但似乎不可能,因为该文件实际上不是别名。

我在考虑什么

我想这是可能的,因为 Finder 的获取信息窗格在获取信息时没有问题。我想知道是否可以更改文件并暂时删除 url 的 '.''.icloud' 组件,但我不确定如何处理,因为我相信它涉及重复或复制文件

预先感谢您!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)