Как проверить, существует ли раскадровка в конкретном NSBundle
Я делаю приложение, которое использует фреймворк, который я создаю.
Фреймворк содержит раскадровки, но в некоторых случаях проект, использующий фреймворк, должен переопределить раскадровку, предоставив новый.
Поэтому моя цель - проверить, существует ли раскадровка с заданным именем в [NSBundle mainBundle]
, если нет, то я получу базовую версию из моего фреймворка.
Я попытался получить раскадровку из основного комплекта и проверить результат на ноль, но он выдает исключение, если не может его найти. Поэтому я попытался поймать исключение и затем загрузить раскадровку из фреймворка. Это работает, но кажется грязным, и оно вполне может повлиять на производительность моего приложения.
Я также пытался pathForResource
в комплекте:
if([[NSBundle mainBundle] pathForResource:name ofType:@"storyboard"] != nil) {
}
Но это никогда не находит раскадровку.
Кто-нибудь знает какой-либо другой способ, которым я могу проверить, существует ли раскадровка в определенном пакете?
2 ответа
Итак, я был почти там с тем, что я уже пытался. Согласно комментарию на мой вопрос, скомпилированное расширение для раскадровки - "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.
}
Быстрый:
if Bundle.main.path(forResource: storyboardName, ofType: "storyboardc") != nil
{
//The storyboard exists
}