Что такое быстрый эквивалент следующего кода:
[NSBundle bundleForClass:[self class]]
Мне нужно загрузить ресурсы из тестового пакета (данные JSON)
Никогда не использовал, но думаю, должно быть так:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
init?(identifier: String)
где идентификатор - это идентификатор пакета вашей цели. Другое решение для типов значений - объявить пустой класс внутри вашего типа значения. Пример последнего решения:Bundle(for: Foo.Bar.self)
гдеFoo
- ваша структура,Bar
- некоторый внутренний класс.type(of: self)
вернетсяClassName.Type
и позвонитBundle(for:)
туда, чтобы вернуть основной пакетSwift 3:
источник
init?(identifier: String)
где идентификатор - это идентификатор пакета вашей цели. Если вы не хотите жестко кодировать идентификатор пакета, используйтеBundle(for: Foo.Bar.self)
whereFoo
- ваша структураBar
- некоторый внутренний класс.Мне лично нравятся:
источник
источник
Swift 5
источник
Выбранный ответ не работал у меня в статическом методе подкласса UIView, но я обнаружил следующее:
Это также работает, когда вы хотите достичь
Bundle
тестовой цели.источник
Если вы работаете в классе, тогда
Иногда вы можете работать в структуре, тогда вам нужно использовать любой класс в пакете
источник
Загрузка xib для dynamicType класса
источник
В Swift 3.0 вы можете использовать:
источник