在早期版本的macOS中,从安全范围的书签构造的NSURL
个实例会在其末尾标记?applesecurityscope=...
个查询字符串。我在单元测试中检查这个,因为它是被测功能的要求。现在,从优胜美地10.10开始,我无法找到一种方法来确定NSURL
的任何面向公众的财产是否具有安全范围。
没有query
或parameterStrings
值,-startAccessingSecurityScopedResource
返回YES
是否具有安全范围。
这对于测试特别有用,因为我的单元测试不在沙盒环境中运行,但应用程序是,因此函数生成的URL必须具有安全范围。
答案 0 :(得分:0)
您可以尝试从该URL获取具有安全范围的书签。仅当该URL已处于安全范围内并且对“常规” URL失败时,此方法才有效:
let isSecurityScoped = (try? url.bookmarkData(options: .withSecurityScope,
includingResourceValuesForKeys: nil,
relativeTo: nil)) != nil
或者,您可以尝试致电url.startAccessingSecurityScopedResource()
。只有在url受安全范围限制的情况下,此操作才会成功。