0

I am trying to build a tip calculator using swift 3 and Xcode. I have written a function and I am trying to simply test that and make sure it is doing what it should and I'll worry about formatting later. However, even without any build or run errors it crashes when I try to run it in the simulator. In regards to whatever answers I may receive, I am very new to this and my teacher doesn't have us using a book so I am not very familiar with the correct terminology. I have pasted my code and the crash log.

//
//  ViewController.swift
//  myTipCalculator
//
//  Created by Mac User on 2/11/17.
//  Copyright © 2017 Mac User. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var billAmount: UITextField!
    @IBOutlet weak var fifteenTip: UIButton!
    @IBOutlet weak var twentyTip: UIButton!
    @IBOutlet weak var twentyFiveTip: UIButton!
    @IBOutlet weak var tipTotal: UILabel!
    @IBOutlet weak var grandTotal: UILabel!



        override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func calcTip(num1: Double, num2: Double){
        print("Tip: \(num1 * num2)")
    }

    @IBAction func calcFifteen(_ sender: Any) {
        let billA = Double(billAmount.text!)
        let tipA = 0.15
        calcTip(num1: billA!, num2: tipA)

    }

    @IBAction func calcTwenty(_ sender: Any) {

        let billA = Double(billAmount.text!)
        let tipA = 0.20
        calcTip(num1: billA!, num2: tipA)

    }

    /*@IBAction func calcTwentyFive(_ sender: Any) {

        let billA = Double(billAmount.text!)
        let tipA = 0.25
        calcTip(num1: billA!, num2: tipA)
    }*/





}

2017-02-11 18:56:21.596 myTipCalculator[7087:101844] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<myTipCalculator.ViewController 0x7f89d3807b80> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key calcTwentyFive.'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000108692d4b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010590b21e objc_exception_throw + 48
    2   CoreFoundation                      0x0000000108692c99 -[NSException raise] + 9
    3   Foundation                          0x00000001054199df -[NSObject(NSKeyValueCoding) setValue:forKey:] + 291
    4   UIKit                               0x0000000105f75293 -[UIViewController setValue:forKey:] + 88
    5   UIKit                               0x00000001061e979e -[UIRuntimeOutletConnection connect] + 109
    6   CoreFoundation                      0x00000001086379e0 -[NSArray makeObjectsPerformSelector:] + 256
    7   UIKit                               0x00000001061e8122 -[UINib instantiateWithOwner:options:] + 1867
    8   UIKit                               0x0000000105f7b9c5 -[UIViewController _loadViewFromNibNamed:bundle:] + 386
    9   UIKit                               0x0000000105f7c2e7 -[UIViewController loadView] + 177
    10  UIKit                               0x0000000105f7c61c -[UIViewController loadViewIfRequired] + 201
    11  UIKit                               0x0000000105f7ce70 -[UIViewController view] + 27
    12  UIKit                               0x0000000105e464b5 -[UIWindow addRootViewControllerViewIfPossible] + 71
    13  UIKit                               0x0000000105e46c06 -[UIWindow _setHidden:forced:] + 293
    14  UIKit                               0x0000000105e5a519 -[UIWindow makeKeyAndVisible] + 42
    15  UIKit                               0x0000000105dd2f8d -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4818
    16  UIKit                               0x0000000105dd90ed -[UIApplication _runWithMainScene:transitionContext:completion:] + 1731
    17  UIKit                               0x0000000105dd626d -[UIApplication workspaceDidEndTransaction:] + 188
    18  FrontBoardServices                  0x0000000109dce6cb __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
    19  FrontBoardServices                  0x0000000109dce544 -[FBSSerialQueue _performNext] + 189
    20  FrontBoardServices                  0x0000000109dce8cd -[FBSSerialQueue _performNextFromRunLoopSource] + 45
    21  CoreFoundation                      0x0000000108637761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    22  CoreFoundation                      0x000000010861c98c __CFRunLoopDoSources0 + 556
    23  CoreFoundation                      0x000000010861be76 __CFRunLoopRun + 918
    24  CoreFoundation                      0x000000010861b884 CFRunLoopRunSpecific + 420
    25  UIKit                               0x0000000105dd4aea -[UIApplication _run] + 434
    26  UIKit                               0x0000000105ddac68 UIApplicationMain + 159
    27  myTipCalculator                     0x000000010532860f main + 111
    28  libdyld.dylib                       0x000000010963c68d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 
KenDubzify
  • 13
  • 1
  • 6
  • It could be because of you have one or more bad outlets. Go to storyboard and right click on your controller, and see if every connection is okay. If it is not, it would show you yellow warning sign. If it's yellow, just delete it and make the connection again. I hope this helps. – Vandan Patel Feb 12 '17 at 01:44

1 Answers1

0

Try to remove the comments from this action: calcTwentyFive, and run your App. If that didn't help you, check out all of your outlets and actions.

It seems that you forgot to list one of your actions/outlet in UIViewController. Basically, click on each item you have in Main.StoryBoard, and click the arrow to the right to check the connection as the following image:

enter image description here

Make sure all of your outlets and actions are found in UIViewController.

Ibrahim
  • 6,006
  • 3
  • 39
  • 50