2016-03-11 4 views
0

Есть ли способ узнать, какой пакет соответствует файлу исходного кода?Как я могу получить пакет для моего кода рамки?

То, что я пытаюсь выполнить следующее:

У меня есть файл source.swift/source.m, внутри Framework X. Этот файл имеет функцию, например: если бы это было в Swift ->whoIsMyEnclosingBundle() -> NSBundle.

Что мне нужно для правильной работы этой функции для меня, чтобы иметь возможность загружать, например, мои раскадровки внутри этой структуры.

Я хотел бы сделать эту функцию общее, так NO жестко прописывать имени сверток в

ответ

1

Я не думаю, что вы ищете +[NSBundle bundleForClass:].

Если вы не находитесь внутри класса, то вы можете использовать +bundleWithIdentifier: (это означает, что вам нужно заранее знать идентификатор). Документация рекомендует этот метод для фреймворков, которым нужен собственный комплект.

+1

В Swift 2.1 будет 'NSBundle (forClass: self.dynamicType)' –

0

В Swift

Есть несколько способов:

Первый из них является тот, который будет работать каждый раз:

  • let bundle = NSBundle(forClass: [the class you are in].self)

Следующие два будет работать только в некоторых случаях:

- для функций, не помеченных как class

let bundle = NSBundle(forClass: self.dynamicType) 

- для классов мостика из Objective-C

let bundle = NSBundle(forClass: [the class you are in].classForCoder()) 

Для большого объяснения по self.dynamicType и self идти в this answer:

Смежные вопросы