我很快就开始了。我正在编写一个框架,该框架将依赖于不属于框架的文件。它将由导入框架的应用程序创建。
在模拟器上运行时工作正常,但界面构建器中的实时渲染会因为无法找到文件而缩小。我之前在Objective-c中做过同样的事情,我知道解决方案是接口构建器正在使用不同的bundle。解决方案是使用:
[[NSBundle bundleForClass:[self class]] pathForResource:<fileName> ofType:<fileType>]
我在网上搜索过,我相信swift中的等价物是:
let path:String? = NSBundle(forClass: self.dynamicType).pathForResource(<fileName>, ofType: <fileType>)
然而它总是在实时渲染中返回nil。虽然:
let path:String? = NSBundle.mainBundle().pathForResource(<filename>, ofType: <fileType>)
在模拟器中工作正常,这意味着文件显然是完成的应用程序的一部分。任何人都知道为什么会这样?在某个地方我还有一个设置?
答案 0 :(得分:1)
在Swift中,代码如下所示:
return NSBundle.init(forClass: <ClassName>.self).pathForResource(<FileName>, ofType: <FileType>)
例如,要从另一个包中获取阿拉伯语的本地化资源,您的代码将如下所示:
return NSBundle.init(forClass: <ClassName>.self).pathForResource("ar", ofType: "lproj")
我认为您的部分问题可能是您尝试点击另一个捆绑包但是您正在通过调用[[NSBundle bundleForClass:[self class]]
来访问当前班级的捆绑包。
我没有写太多客观C,但我怀疑你能够代表我翻译这个。