gpt4 book ai didi

swift - 如何告诉 Swift 在默认选项之间使用哪个函数签名

转载 作者:行者123 更新时间:2023-12-02 19:18:17 25 4
gpt4 key购买 nike

我想实例化我创建的 Storyboard 的 Root View Controller 。

为此,我习惯于从 Storyboard调用 -instantiateInitialViewController()

问题是,自 iOS13 以来,出现了一个新的方法签名,它采用新的可选参数:(creator: ((NSCoder)->ViewController?)?)

Capture of Xcode showing autocompletion

令人烦恼的是 Xcode 认为我想使用新的 API,这使得我的应用程序与旧操作系统不兼容。

Capture of Xcode showing an inline error prompt

即使进行版本检查,我也无法绕过它。

Capture of Xcode still showing an error after applying a suggested fix

我的问题是:如何告诉编译器使用不带参数的方法签名?

最佳答案

问题快速解答:Xcode BUG

首先,正如您的屏幕截图所示,这是一个错误。 (尝试删除驱动数据或重新启动东西以使其工作)。以下是对您问题的答复。


说明:如何告诉编译器使用哪个方法签名

Swift 根据表达式中使用的类型推断函数签名。所以想象一下:

class ViewController { }
class UIViewController { }

func instantiateInitialViewController() -> UIViewController? {}
func instantiateInitialViewController() -> ViewController? {}

因此,调用此方法将是 instantiateInitialViewController() 的不明确使用:

let theController = instantiateInitialViewController()

解决方案是明确地告诉编译器期望的类型是什么:

let theController: ViewController? = instantiateInitialViewController()
let theOtherController: UIViewController? = instantiateInitialViewController()

新的 instantiateInitialViewController 返回类型是一个限制为 UIViewController 的协议(protocol) (ViewController)。所以它应该推断类型并且与旧的没有逻辑差异。所以保持冷静并让它推断;)

关于swift - 如何告诉 Swift 在默认选项之间使用哪个函数签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63397501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com