【发布时间】:2018-09-04 19:42:33
【问题描述】:
如果我有一个包标识符为String,我如何找出它所标识的包的URL?相反,如果我有一个包的URL,我如何找出那个包的标识符为String?
我只想使用 Foundation/Cocoa API 来执行此操作。
【问题讨论】:
标签: cocoa url foundation bundle-identifier app-bundle
如果我有一个包标识符为String,我如何找出它所标识的包的URL?相反,如果我有一个包的URL,我如何找出那个包的标识符为String?
我只想使用 Foundation/Cocoa API 来执行此操作。
【问题讨论】:
标签: cocoa url foundation bundle-identifier app-bundle
您可以使用Bundle 的init(identifier:) 后跟bundleURL 来从包标识符中获取URL,并使用Bundle 的init(url:) 后跟bundleIdentifier 来获取包的URL。
let myBundleUrl = Bundle(identifier: "com.me.app")?.bundleURL
let theirBundleId = Bundle(url: URL(fileURLWithPath: "/Applications/Mail.app"))?.bundleIdentifier
请注意,NSWorkspace 也有一个 API,用于从给定的 bundle ID 获取 URL:urlForApplication(withBundleIdentifier:)。我在这里不推荐这个,因为NSWorkspace 没有从URL 获取标识符的API。
【讨论】:
Bundle(identifier:) 时,您会得到 nil?也许是沙盒的事情?