如何检查特定NSBundle中是否存在Storyboard

Swi*_*y89 9 xcode objective-c storyboard nsbundle ios

我正在制作一个使用我正在创建的框架的应用程序.

该框架包含故事板,但在某些情况下,使用框架的项目需要通过提供新的故事板来覆盖故事板.

所以我的目标是检查是否存在具有给定名称的故事板[NSBundle mainBundle],如果不存在,那么我将从我的框架中获取基本版本.

我试过从主包中获取故事板并检查结果是否为nil但是如果它找不到它会引发异常.然后我尝试捕获异常,然后从框架加载故事板.这确实有效,但它感觉很脏,很可能会影响我的应用程序的性能.

我也试过pathForResource捆绑:

if([[NSBundle mainBundle] pathForResource:name ofType:@"storyboard"] != nil) {

}
Run Code Online (Sandbox Code Playgroud)

但这从未找到故事板.

有没有人知道我可以检查特定包中是否存在故事板的任何其他方式?

Swi*_*y89 15

所以,我几乎就在那里,我已经在努力了.根据我的问题的评论,故事板的编译扩展是"storyboardc".所以我可以检查故事板是否存在于这样的包中:

if([[NSBundle mainBundle] pathForResource:name ofType:@"storyboardc"] != nil) {
    //The storyboard exists
} else {
    //The storyboard isn't in the bundle, get it from the framework bundle.
}
Run Code Online (Sandbox Code Playgroud)

  • `storyboardc`中的"c"非常重要,因为我们正在寻找编译器故事板文件! (3认同)