将一些代码添加到 XCode 中的一个文件会导致在尝试运行该文件的预览时显示以下错误:
编译失败:“keyWindow”的替换访问器出现在多个位置。
仅当文件中使用以下代码时才会发生错误:
extension UIApplication {
var keyWindow: UIWindow? {
return UIApplication.shared.connectedScenes
.filter { $0.activationState == .foregroundActive }
.first(where: { $0 is UIWindowScene })
.flatMap({ $0 as? UIWindowScene })?.windows
.first(where: \.isKeyWindow)
}
var keyWindowPresentedController: UIViewController? {
var viewController = self.keyWindow?.rootViewController
if let presentedController = viewController as? UITabBarController {
viewController = presentedController.selectedViewController
}
while let presentedController = viewController?.presentedViewController {
if let presentedController = presentedController as? UITabBarController {
viewController = presentedController.selectedViewController
} else {
viewController = presentedController
}
}
return viewController
}
}
我对 UIKit 知之甚少,这段代码是从网上复制/粘贴的。为什么此代码会使我的预览崩溃?如何修复它?
我在 macOS Monterey 上运行 XCode 13.4.1
最佳答案
UIApplication
已经具有 keyWindow
属性,并且工作区中似乎已经有其他具有相同属性的扩展,因此只需为您使用不同的名称,例如
extension UIApplication {
var currentWindow: UIWindow? {
*或者找到另一个,看看是否可以重用它。
关于swift - XCode 预览错误 : "Replaced Accessor for ' keyWindow'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72705844/