为什么NSBundle bundleIdentifier是可选的?

时间:2016-11-01 15:59:37

标签: ios swift

只是想知道为什么"是可选的。

enter image description here

它有可能是零吗?

3 个答案:

答案 0 :(得分:5)

如果您只是构建可执行文件,运行脚本或使用Swift REPL,bundleIdentifier将为零。

例如,创建一个名为test.swift的文件,其中包含。

import Foundation

print("\(Bundle.main.bundleIdentifier)")

然后使用

从终端运行它
swift test.swift

它会打印nil

答案 1 :(得分:4)

参考bundleIdentifier

  

包标识符由CFBundleIdentifier键定义   捆绑的信息属性列表。

因为应用的.plist文件中有一个名为CFBundleIdentifier的密钥可能为空:

enter image description here

如果您看到不同的键名,请右键单击并选择"显示行键/值"。

在这种情况下,它应该是nil

答案 2 :(得分:3)

我相信它是因为NSBundle必须从Info.plist中提取此信息。请记住,bundleIdentifier方法存在于所有NSBundle个实例上,而不仅仅是主包,而其他包可能不如主包那么好。