【问题标题】:UIStoryboard 'init(name:bundle)' issue in RELEASE config发布配置中的 UIStoryboard 'init(name:bundle)' 问题
【发布时间】:2017-08-15 00:12:48
【问题描述】:

我在尝试以 RELEASE 配置构建应用程序时看到以下错误。当我在DEBUG 模式下构建相同的应用程序时,似乎一切正常。

UIStoryboard 'init(name:bundle)' 不可用:使用对象 构造' UIStoryboard(name:bundle)' 'init(name:bundle)' 已经 此处明确标记为不可用。

我确信几天前相同的代码在 RELEASE 配置中运行良好(没有任何错误)。

这是抛出错误的行:

让 storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)

我在 Xcode 版本 8.3.3 (8E3004b) 中编译它。

谢谢。

【问题讨论】:

    标签: ios swift3 xcode8


    【解决方案1】:

    这似乎是一些 Xcode 或 Swift 编译器的错误。 项目中还有另一个错误(仅在 RELEASE 配置中)

    filteredFavoriteList = searchText.isEmpty ? [] : favoriteList.filter({(report: AnyObject) -> Bool in
        return report.reportTitle.localizedCaseInsensitiveContains(searchText)
    })
    

    由于 AnyObject 类型的“report”没有任何属性“reportTitle”,这段代码在 relese 配置中抛出错误(虽然它在调试配置中工作)。

    我对此进行了以下修复:

    filteredFavoriteList = searchText.isEmpty ? [] : favoriteList.filter({(report: AnyObject) -> Bool in
        if let report = report as? MyClass{
            return report.reportTitle.localizedCaseInsensitiveContains(searchText)
        }else{
            return false
        }
    })
    

    现在不再有 UIStoryboard 错误,我可以在发布配置中构建应用程序。

    所以这一行没有错误,但由于其他一些原因/错误,它在这里抛出错误。奇怪但真实。

    let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
    

    谢谢。

    【讨论】:

    • 这里对 AnyObject 的整个使用是可疑的。诚然,这个错误令人困惑,但你不应该这样做,而且你仍然不应该这样做。
    猜你喜欢
    • 2010-11-16
    • 2011-09-19
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多