swift - XCode 预览错误 : "Replaced Accessor for ' keyWindow'"

标签 swift xcode uikit xcode-previews

将一些代码添加到 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/

相关文章:

ios - 在函数内将数据传递到 segue.destination 时出现问题

ios - 使用动态高度更改 UITableViewCell 中的 UILabel 文本长度不会正确调整其大小

iphone - 即使主线程似乎运行良好,UIProgressView 也不会更新

ios - swift 5 : index out of range when returning the array count from tableView numberOfRowsInSection

swift - ( swift )任何人都可以帮助我对这些按钮进行批量更改吗?

ios - 将字典追加到 Swift 数组

iphone - 我在这里犯了什么愚蠢的菜鸟错误?

ios - 没有收到 NSMetaDataQuery 更新通知

ios - 相互依赖的框架 Xcode

ios - 如何从我的 appDelegate 访问我的 viewController?苹果系统