如何检查 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
}
我正在制作一个应用程序,它使用我正在创建的框架。
框架包含故事板,但在某些情况下,使用框架的项目需要通过提供新的故事板来覆盖故事板。
所以我的目标是检查 [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
}