Пожалуйста, объясните мне природу ошибки: Завершение приложения из-за необработанного исключения «NSInvalidArgumentException» - PullRequest
0 голосов
/ 04 мая 2020

Я создаю свое первое приложение iOS в версии XCode 11.4.1 (11E503a). Я использую Swift 5.1 и раскадровку для создания пользовательского интерфейса. У меня есть пять TextFields в одном приложении просмотра. Пользователь должен ввести данные в эти поля, а затем есть кнопка отправки. Когда пользователь нажмет кнопку отправки, данные в полях будут сохранены в словаре. Я подозреваю, что это та часть, где я делаю что-то не так. Я не уверен в природе ошибки при запуске этой программы в эмуляторе. Ниже приведен код, который я написал в ViewController.swift

import UIKit

class ViewController: UIViewController {


@IBOutlet weak var SerialNumber: UITextField!

@IBOutlet weak var WastebinType: UITextField!

@IBOutlet weak var EnterStatus: UITextField!

@IBOutlet weak var ActionRequired: UITextField!

@IBOutlet weak var EnterZone: UITextField!

@IBOutlet weak var SendButton: UIButton!



    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

    }


    @IBAction func SendTapped(_ sender: Any) {

        self.SaveFields()
        }

    func SaveFields(){   // This function is creating a dictionary of the data entered in the
        let SN = self.SerialNumber.text!            // text field
        let WT = self.WastebinType.text!
        let ER = self.EnterStatus.text!
        let AR = self.ActionRequired.text!
        let EZ = self.EnterZone.text!

        let dict = ["SN": SN, "WT": WT, "ER" : ER, "AR" : AR, "EZ" : EZ]

         print("/(dict)")
        }

}

Ниже приводится сообщение об ошибке, которое я получаю в консоли:

2020-05-04 23:30:24.164409+0530 Garbage management[8811:544439] -[Garbage_management.ViewController SendTap:]: unrecognized selector sent to instance 0x7fc9e550a2c0
2020-05-04 23:30:24.179445+0530 Garbage management[8811:544439] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Garbage_management.ViewController SendTap:]: unrecognized selector sent to instance 0x7fc9e550a2c0'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff23e39f0e __exceptionPreprocess + 350
    1   libobjc.A.dylib                     0x00007fff50ad79b2 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff23e5ac34 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   UIKitCore                           0x00007fff48bf7058 -[UIResponder doesNotRecognizeSelector:] + 302
    4   CoreFoundation                      0x00007fff23e3e90c ___forwarding___ + 1436
    5   CoreFoundation                      0x00007fff23e40bf8 _CF_forwarding_prep_0 + 120
    6   UIKitCore                           0x00007fff48bc9235 -[UIApplication sendAction:to:from:forEvent:] + 83
    7   UIKitCore                           0x00007fff4857a9d3 -[UIControl sendAction:to:forEvent:] + 223
    8   UIKitCore                           0x00007fff4857ad1b -[UIControl _sendActionsForEvents:withEvent:] + 396
    9   UIKitCore                           0x00007fff48579c8c -[UIControl touchesEnded:withEvent:] + 497
    10  UIKitCore                           0x00007fff48c04a70 -[UIWindow _sendTouchesForEvent:] + 1359
    11  UIKitCore                           0x00007fff48c067f5 -[UIWindow sendEvent:] + 4501
    12  UIKitCore                           0x00007fff48be0c39 -[UIApplication sendEvent:] + 356
    13  UIKitCore                           0x00007fff48c6b096 __dispatchPreprocessedEventFromEventQueue + 7328
    14  UIKitCore                           0x00007fff48c6e262 __handleEventQueueInternal + 6565
    15  UIKitCore                           0x00007fff48c64dcb __handleHIDEventFetcherDrain + 88
    16  CoreFoundation                      0x00007fff23d9deb1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    17  CoreFoundation                      0x00007fff23d9dddc __CFRunLoopDoSource0 + 76
    18  CoreFoundation                      0x00007fff23d9d5b4 __CFRunLoopDoSources0 + 180
    19  CoreFoundation                      0x00007fff23d981ae __CFRunLoopRun + 974
    20  CoreFoundation                      0x00007fff23d97ac4 CFRunLoopRunSpecific + 404
    21  GraphicsServices                    0x00007fff38b2fc1a GSEventRunModal + 139
    22  UIKitCore                           0x00007fff48bc7f80 UIApplicationMain + 1605
    23  Garbage management                  0x000000010081d4ab main + 75
    24  libdyld.dylib                       0x00007fff519521fd start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Пожалуйста, помогите мне понять характер этой ошибки, почему она возникает и как ее устранить.

1 Ответ

1 голос
/ 04 мая 2020

Просто переименуйте ваше действие в

@IBAction func SendTap(_ sender: Any) {
    self.SaveFields()
}

Скорее всего, вы установили соединение из раскадровки, а затем переименовали его в редакторе, который, конечно, не переименовал его автоматически обратно в раскадровку.

...