为什么NSBundle bundleIdentifier是可选的?

Ram*_*Vel 7 ios swift

只是想知道为什么NSBundle bundleIdentifier是可选的.

在此输入图像描述

有什么理由可以是零吗?

Cra*_*ens 6

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

例如,创建一个名为test.swiftcontains 的文件.

import Foundation

print("\(Bundle.main.bundleIdentifier)")
Run Code Online (Sandbox Code Playgroud)

然后从终端运行它

swift test.swift
Run Code Online (Sandbox Code Playgroud)

它将打印为零


Bob*_*Bob 5

我相信这是因为NSBundle必须从 Info.plist 中提取这些信息。请记住,该bundleIdentifier方法在所有NSBundle实例上都存在,而不仅仅是主包,其他包可能不像主包那样组合得很好。


Ahm*_*d F 5

引用bundleIdentifier

束标识符由束的信息属性列表中的CFBundleIdentifier键定义。

由于应用程序.plist文件中有一个密钥,因此称为CFBundleIdentifiernull:

在此处输入图片说明

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

在这种情况下,应该为nil