1

I am following the iOS & Swift - The Complete iOS App Development Bootcamp on udemy. I am creating a Magic 8 ball app. I have successfully created the user interface and have assigned my UIImageView and button to the main story board. When I click run my simulator opens up and then brings me to my AppDelegate saying Thread 1: "[<Magic_8_Ball.ViewController 0x159508630> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key askButtonPressed." All I see is a white screen on my simulator every time I open the app.

I was expecting the app to show me my blue background my 8 ball and the button. When I click the button the 8 ball image changes.

This is the Main tab

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!
    
    @IBAction func askButtonPressed(_ sender: UIButton) {
        imageView.image = #imageLiteral(resourceName: "ball3.png")
    }
    
}

This is the AppDelegate

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {



    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }

    func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }


}
  • Did you forget to connect something in your storyboard? Like the button and the action? – Joakim Danielson May 29 '23 at 13:56
  • Something is wrong with how you have set up your storyboard linking. `askButtonPressed` is a method, but the storyboard is trying to set a property of your view controller called `askButtonPressed` - but there is no such property. Most likely you mistakenly made a `@IBOutlet` called `askButtonPressed` at some point and linked this to your storyboard and you have now deleted this property from your view controller but the storyboard still references it. Delete the link from the storyboard elements (the outlet and the action) and then reconnect them. – Paulw11 May 29 '23 at 14:02
  • Does this answer your question? [Xcode - How to fix 'NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X" error?](https://stackoverflow.com/questions/3088059/xcode-how-to-fix-nsunknownkeyexception-reason-this-class-is-not-key-valu) – HangarRash May 29 '23 at 14:47

0 Answers0