gpt4 book ai didi

cocoa - NSURL.URLByResolvingSymlinksInPath 不适用于/tmp、/var。有解决方法吗?

转载 作者:行者123 更新时间:2023-12-03 16:33:03 25 4
gpt4 key购买 nike

(macruby 语法中的代码示例)

如果我创建一个网址:

u1 = NSURL.fileURLWithPath('/tmp')

然后尝试创建一个已解析符号链接(symbolic link)的网址:

u2=u1.URLByResolvingSymlinksInPath

我回来了/tmp:

irb(main):010:0> u2.pathComponents
=> ["/", "tmp"]

这是一个问题,因为如果我使用此 NSURL(或/var 或/etc)创建 NSDirectoryEnumerator,并预取 NSURLParentDirectoryURLKey,则返回的 NSURL 将具有路径/private/tmp/...

我需要获取相对于 NSDirectoryEnumerator 根目录的目录路径的组成部分。除了对我所知道的特殊情况进行硬编码检测(到目前为止是/tmp、/var 和/etc)之外,是否有一种可靠的方法可以做到这一点?

有人知道 URLByResolvingSymlinksInPath 不起作用的其他“特殊”目录吗?

最佳答案

我一直没能找到这个问题的完整答案。对于我的情况,我向 NSURL 添加了一个处理/tmp、/var 和/etc 的方法:

class NSURL
def URLByResolvingSymlinksInPathIncludingPrivate
url = self.URLByResolvingSymlinksInPath
parts = url.pathComponents
if (parts.first == '/') && ['tmp', 'var', 'etc'].include?(parts[1])
url = NSURL.fileURLWithPathComponents(['/', 'private'] + parts[1..-1])
end
url
end
end

我决定最好添加一个显式方法,而不是 Monkeypatch URLByResolvingSymlinksInPath。

关于cocoa - NSURL.URLByResolvingSymlinksInPath 不适用于/tmp、/var。有解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com