Быстрый эквивалент [NSBundle bundleForClass: [собственный класс]]

Что такое быстрый эквивалент следующего кода:

[NSBundle bundleForClass:[self class]]

Мне нужны ресурсы загрузки из тестового пакета (данные JSON)

Ответ 1

Никогда не используется, но я думаю, что это должно быть так:

Swift <= 2.x

NSBundle(forClass: self.dynamicType)

Swift 3.x

Bundle(for: type(of: self))

Ответ 2

Swift 3:

Bundle(for: type(of: self))

Ответ 3

Мне лично нравится:

let bun = NSBundle(forClass: self.classForCoder)

Ответ 4

let bundle = NSBundle(forClass:object_getClass(self))

Ответ 5

Выбранный ответ не работал у меня в статическом подклассе UIView, но я нашел это:

Bundle(for: self.classForCoder)

Это также работает, когда вы хотите получить Bundle в пределах тестовой цели.

Ответ 6

Загрузка 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);

Ответ 7

Если вы работаете в классе, то

Bundle(for: type(of: self))

Иногда вы можете работать в структуре, тогда вам нужно использовать любой класс в комплекте

Bundle(for: AnyClassInTheBundle.self)

Ответ 8

В Swift 3.0 вы можете использовать:

func kZWGetBundle() -> Bundle{
    return Bundle(for: AnyClass.self as! AnyClass)
}