Ответ 1
Никогда не используется, но я думаю, что это должно быть так:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
Что такое быстрый эквивалент следующего кода:
[NSBundle bundleForClass:[self class]]
Мне нужны ресурсы загрузки из тестового пакета (данные JSON)
Никогда не используется, но я думаю, что это должно быть так:
Swift <= 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
Swift 3:
Bundle(for: type(of: self))
Мне лично нравится:
let bun = NSBundle(forClass: self.classForCoder)
let bundle = NSBundle(forClass:object_getClass(self))
Выбранный ответ не работал у меня в статическом подклассе UIView, но я нашел это:
Bundle(for: self.classForCoder)
Это также работает, когда вы хотите получить Bundle
в пределах тестовой цели.
Загрузка xib для dynamicType класса
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "CellForAlert", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil).first as! UIView
view.frame = bounds
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.addSubview(view);
Если вы работаете в классе, то
Bundle(for: type(of: self))
Иногда вы можете работать в структуре, тогда вам нужно использовать любой класс в комплекте
Bundle(for: AnyClassInTheBundle.self)
В Swift 3.0 вы можете использовать:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}