Получить идентификатор пакета программно в Swift?

95

Как я могу получить идентификатор пакета в Swift?

Версия Objective-C:

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
Пользователь
источник

Ответы:

209

Попробуй это:

let bundleID = NSBundle.mainBundle().bundleIdentifier

Swift 3+:

let bundleID = Bundle.main.bundleIdentifier
Себастьян
источник
20
Вы знаете, почему bundleIdentifierэто необязательно? В каких случаях это может быть nil?
Александр - Восстановить Монику
Иногда дело не в том, в каких случаях он может быть нулевым, когда он достигает высокого уровня разработки, а в том, в каких случаях он может быть нулевым под капотом.
Sethmr
2
@Alexander, когда это не основной комплект, или CFBundleIdentifierон отсутствует
ArtFeel
6

В Swift это почти то же самое, за исключением того, что имена классов и методов были сокращены:

let bundleIdentifier = Bundle.main.bundleIdentifier // return type is String?

источник
5

Если вы пытаетесь получить это программно, вы можете использовать следующую строку кода:

Цель-C:

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

Swift 3.0:

let bundleIdentifier =  Bundle.main.bundleIdentifier

Обновлено для последней версии Swift. Он будет работать как для приложений iOS, так и для Mac.

Для получения дополнительной информации проверьте здесь:

Документы Apple: https://developer.apple.com/documentation/foundation/bundle#//apple_ref/occ/instm/NSBundle/bundleIdentifier

Акс
источник
Эй, чек на swift3, сними отрицательный чек.
Акс