首页 > 解决方案 > 仅返回 nil 的类的实例

问题描述

对 Swift 来说相当陌生,并且在努力在另一个类中创建一个类的实例。我正在触发一个通知,然后在我的应用程序委托中,它通过播放音乐播放器并更改我的 viewController 中的标签来响应,但是当它尝试更改标签时,应用程序崩溃并出现错误“在隐式展开可选值时意外发现 nil”。我可以通过添加“?”来绕过它 但为什么它会为零。

代码

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, AVAudioPlayerDelegate {

var musicPlayerManager: MusicPlayerManager = MusicPlayerManager()
var viewController: ViewController = ViewController()

func application(_ application: UIApplication, didReceive notification: UILocalNotification) {

        //show an alert window
        var playlistName: String = ""
        if let userInfo = notification.userInfo {
            playlistName = userInfo["soundName"] as! String
        }
        musicPlayerManager.playPlaylist(chosenPlaylist: playlistName)
        print(playlistName)
        viewController.currentPlaylist.text = "Playlist: \(playlistName)"

    }

}

我在控制台中打印了 playlistName,然后它崩溃,最后一行表明这是 viewController 实例的问题,并且我尝试从应用程序委托更改视图控制器中的标签。

标签: iosswiftinstance

解决方案


在 vc 加载之前,出口为零,如果它存在,您还需要从情节提要中加载它

viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "id") as! ViewController 
viewController.view.layoutIfNeeded()
viewController.currentPlaylist.text = "Playlist: \(playlistName)"

推荐阅读