安装来自TestFlight的应用程序由于所谓的UISearchDisplayController而崩溃

61

我在一个相对古老的应用中使用当前beta版的Xcode实现了暗模式,并将其上传到TestFlight供我的测试者测试。然而,任何安装了iOS 13公测版的人都会立即崩溃。

我已经将Crashlytics集成到应用中,这些崩溃的原因如下:

使用此版本的iOS时不再支持UISearchDisplayController。请将您的应用程序迁移到UISearchController

所有的UISearchDisplayController实例已经被替换为UISearchController。该应用程序不再使用UISearchDisplayController。也没有链接到UISearchDisplayController,但是这些崩溃仍然会发生,但只会出现在TestFlight的安装中。

如果以“Debug”或“Release”的方式直接通过Xcode在安装有iOS 13公测版的iPhone上安装应用,则不会出现崩溃。

有人有这个问题的解决方案吗?


您需要检查此链接:https://developer.apple.com/documentation/uikit/uisearchdisplaycontroller - dahiya_boy
搜索你正在使用的库。 - Sulthan
@sulthan 我搜索了所有的库,没有一个使用 UISearchDisplayController 或它的 delegate。 - knarz
无法做其他事情,只需确保您没有任何挂起的 UISearchDisplayControllerDelegate 或其实例即可。 - Tj3n
1
@Tj3n 你是专门在搜索UISearchDisplayController吗,还是只搜索了它的代理?同时尝试在你的项目文件夹上运行grep命令。xib文件中可能会有引用。 - Sulthan
3个回答

90

在我们的应用程序中找不到任何有关UISearchDisplayController的引用后,我们收到了相同的错误。我们意识到需要在其中一个storyboard中搜索并替换searchDisplayController。重新提交测试版到TestFlight后,这一问题得到了解决。


9
非常感谢,直接在Storyboard的源代码中搜索"searchDisplayController"就是解决方法。 - knarz
2
你用什么替换了<searchDisplayController>?用<searchController>替换会出现错误。 - dnzzcn
@dnzzcn,你找到要用什么替换searchDisplayController了吗? - Hyder
1
我们在应用商店审核中遇到了问题,被拒绝了。问题是在两个地方,searchDisplayController插座仍然在IB中连接,尽管相关的视图控制器早已被修改。我们在测试中没有发现这个问题,因为显然在模拟器中运行时不会崩溃。 - sumizome
顺便说一下,搜索它的简单方法是打开项目主文件夹中的终端并运行:grep -r searchDisplayController * - Ricardo Barroso
显示剩余4条评论

40

在模拟器上运行正常,但所有测试人员都报告说它崩溃了。问题出在故事板中。请在您的视图中搜索以下内容。 在此输入图片描述 在此输入图片描述


2
您可以从IB中删除这些内容以及任何对它们的IBOutlet。在代码中添加搜索会更容易。 - user1200543

2

由于与此版本的iOS链接而终止应用程序的未捕获异常:“UISearchDisplayController不再支持。请将您的应用程序迁移到UISearchController。”

在本地运行成功,但在TestFlight应用程序上崩溃。

解决方法:

我发现一个卡在其中一个故事板中,并且不再使用的UISearchDisplayController。直接在故事板的源代码中搜索searchDisplayController并删除它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接