我有一个基于UIDocument
的应用程序,它显示了存储在iCloud中的文档列表。我正在使用NSMetadataItem
从metadataItem.value(forAttribute: NSMetadataItemDisplayNameKey)
获取文件名(用于显示)。文档包含一个字符串,我已重写localizedName
属性以生成包含此字符串的更好名称。理想情况下,我想在下载之前显示UIDocument
的localisedName属性。有没有办法做到这一点?
我将UIDocument
存储为FileWrapper
,其中包含FileWrapper
个文档的每个部分。就我而言,这只是UIImage
和String
。
我设法在没有下载文档的情况下获取缩略图,所以我想知道这个字符串是否有相同的东西。
我正在使用Swift 4,但我认为这没有任何区别。非常感谢。
答案 0 :(得分:0)
乔希,
fileURL.deletingPathExtension()。lastPathComponent
将为您提供相当于未覆盖的localizedName。
我可以从你的帖子推断你知道你的metadataquery.results会给你一个URL列表。您可以在任何网址上使用此功能。
仅供参考,未经重写的localizedName在您的UIDocument实例化后甚至无法工作,您必须先打开它,这看起来很傻。
如果您需要使名称更加花哨而不是基于fileURL,那么您需要先打开文件,据我所知。
我知道你理解这一点,但是对于其他人来说,覆盖localizedName只是让你将它修改为你想要的字符串,可能是基于用户的位置,笑脸。
使用fileWrappers将允许您打开并获取任何存储的变量,而不必打开" Big Object"。缩略图曾经以这种方式加载,但由于他们添加了文件浏览器,因此已升级为原生云。
你是否有时间迫使这些打开列表在TableView,CollectionView?我问的原因是因为UIDocument在文件打开时不符合ARC,连接到云的Deamon将保留一个硬参考,减慢Deamon,我假设,并且如果TableViewCell是,则不允许UIDocument去除在文件关闭之前重用,即指向文档的指针丢失。