对于非ASCII文件名,NSURL子类(带文件URL)在QuickLook中不起作用?

时间:2016-09-16 06:40:08

标签: swift unicode nsurl quicklook

这里有很多部分,但从我所知道的情况来看,它们都是重现问题所必需的。

我创建了一个简单的NSURL子类,如下所示:

class URL2: NSURL { }

我用它制作了一个文件网址:

let f = URL2(fileURLWithPath: "/Users/me/Downloads/ついて.pdf")

然后我尝试从previewPanel(panel:previewItemAtIndex index:)返回。

结果:我在QLPreviewPanel中获得了一个通用文件图标(但文件名正确)。

奇怪的是,如果我以不同的方式做任何一件事,那就有效:

  • 如果我使用普通NSURL(fileURLWithPath: "/Users/me/Downloads/ついて.pdf"),则会正确显示文件内容。
  • 如果我使用仅ASCII文件名,则会正确显示文件内容。
  • 如果我使用URL2执行其他操作(就像某些NSFileManager操作一样),它可以很好地定位文件。

在这种情况下,我可能做错了什么导致QuickLook对我的NSURL子类不满意?

1 个答案:

答案 0 :(得分:1)

NSURL(或NSURLRequest)的子类化通常是疯狂的途径,这在很大程度上(我认为)在OS的各个部分大量使用NSXPC。

我建议使用带有关联对象的类别。这应避免您遇到的边缘情况,同时仍允许您向NSURL对象添加自定义方法和属性。