如何获取框架代码的包?

时间:2016-03-11 22:49:52

标签: ios cocoa-touch nsbundle

有没有办法知道哪个bundle对应一个源代码文件?

我想要完成的是以下内容:

我在Framework X中有一个source.swift / source.m文件。这个文件有一个函数,例如:如果它在 Swift - > whoIsMyEnclosingBundle() -> NSBundle

我需要这个功能才能正常工作,这样我就可以在该框架内加载我的故事板。

我想让这个功能变得通用,所以没有对该软件包的名称进行硬编码

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找+[NSBundle bundleForClass:]

如果你不在课堂内,那么你可以使用+bundleWithIdentifier:(这意味着你需要提前知道标识符)。文档建议需要自己的bundle的框架方法。

答案 1 :(得分: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.dynamicTypeself的详细解释,请进入this answer