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

How to check if a Storyboard exists in a specific NSBundle

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

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

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

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

我也试过 pathForResource 捆绑:

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

}

但这永远找不到故事板。

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

所以,我几乎已经完成了我已经尝试过的事情。根据对我的问题的评论,故事板的编译扩展名是 "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.
}

Swift:

if Bundle.main.path(forResource: storyboardName, ofType: "storyboardc") != nil 
{
   //The storyboard exists
}