Тема 1: сигнал SIGABRT AppDelegate.swift

Я попытался скомпилировать свое первое приложение iOS Hello.

У меня есть

ViewController.swift

//
//  ViewController.swift
//  My First Project

import UIKit

class ViewController: UIViewController {

    // Declare components
    @IBOutlet weak var inputLabel: UILabel!



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


    }

    @IBAction func submitBtn(_ sender: Any) {
        inputLabel.text = "Hello World"

    }


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


}

я Kept

Получение Build Succeeded

введите описание изображения здесь

Но примерно через 5 секунд я получил это

введите описание изображения здесь


Ошибка консоли

введите описание изображения здесь

         0x0000000103915f69 -[UIApplication workspaceDidEndTransaction:] + 188
    18  FrontBoardServices                  0x000000010770f723 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
    19  FrontBoardServices                  0x000000010770f59c -[FBSSerialQueue _performNext] + 189
    20  FrontBoardServices                  0x000000010770f925 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
    21  CoreFoundation                      0x0000000105ff0311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    22  CoreFoundation                      0x0000000105fd559c __CFRunLoopDoSources0 + 556
    23  CoreFoundation                      0x0000000105fd4a86 __CFRunLoopRun + 918
    24  CoreFoundation                      0x0000000105fd4494 CFRunLoopRunSpecific + 420
    25  UIKit                               0x00000001039147e6 -[UIApplication _run] + 434
    26  UIKit                               0x000000010391a964 UIApplicationMain + 159
    27  My First Project                    0x0000000102e6db3f main + 111
    28  libdyld.dylib                       0x0000000106f7868d start + 1
    29  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Попробуйте # 1

Инспектор соединений

Я использовал этот

введите описание изображения здесь

Я обновился до этого

введите описание изображения здесь

Повторное выполнение и все еще происходит...


Попробуйте # 2

Очистить проект

Повторное выполнение и все еще происходит...

Ответ 1

Проблема в ваших ярлыках, я на 100% уверен, что вы удалили ссылки на некоторые ссылки и не забыли удалить соединение с доски объявлений. Пожалуйста, проверьте

Ответ 2

В коде и снимок экрана есть несогласованность.

  • Код: label.text = "Hello World"
  • Снимок экрана: inputLabel.text = "Hello World"

Сообщение об ошибке:

... не соответствует ключевому значению для ключевого ярлыка .

Таким образом, скорее всего, в вашем фактическом коде IBOutlet называется inputLabel, но в Interface Builder существует (мертвое) соединение с label, которое вызывает сбой.

Решение:

  • Выберите Main.storyboard в панели навигации и ViewController в холсте.
  • Откройте инспектор подключений (⌥⌘6)
  • Удалите соединение с label.
  • Подключите контроллер к inputLabel.

Ответ 3

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

Когда вы переходите на main.storyboard, справа у вас есть панель, наиболее подходящая для инспектора соединений. Там вы должны удалить соединение, нажав маленькое "x" в соединениях.

Он должен выглядеть несколько знакомым, но разные имена в этом скриншоте

удалить все из них

также в вашем файле viewController.swift, удалите все строки @IBOutlet.

Затем снова подключите свои розетки к файлу ViewController.swift, который вы делали до

Чтобы просто сменить метку в коде, она должна выглядеть следующим образом окончательный скриншот

умьте выход справа

Я надеюсь, что это поможет вам!

Ответ 4

Другие упомянули о торговых точках и их ссылках, которые вы должны убедиться в том, что они правильно подключились к вашему классу.

Еще один возможный случай, возможно, следующий: если вы определили ключевой путь для своего ярлыка под user defined Rundtime Attributes на вкладке identity inspector в раскадровке, а если ключ undefined, вы получите это сообщение об ошибке в журнале консоли:

...this class is not key-value compliant for the key label.

например. на изображении ниже вы видите путь ключа popupTitle, если он не определен в вашем классе метки, он получит это сообщение об ошибке. и в некоторых случаях он потерпит крах. Убедитесь, что в этом разделе нет дополнительного ключа.

введите описание изображения здесь

Ответ 5

У вас установлен флажок по умолчанию для IBOutlet.

введите описание изображения здесь

Ответ 6

Эта проблема возникает, если вы удаляете ссылку на выход в ViewController и забудьте удалить соединение из storyboard.

Идеальное соединение ✅

Идеальная ссылочная розетка выглядит как снимок экрана.

введите описание изображения здесь введите описание изображения здесь

Теперь позвольте удалить референс-выход из .h файла

Проблема ⚠️

если мы удалим ссылку на выход из .h файла, Xcode даст предупреждение в раскадровке. это трюк, который вы можете найти, какой выход был удален из класса.

Надеюсь, это поможет вам.

введите описание изображения здесь

введите описание изображения здесь

Решение

В вашем случае вы, возможно, изменили имя lable на inputLable, поэтому вам нужно сделать:

Удалите соединение с label. Подключите контроллер к inputLabel.

Ответ 7

Он разбился, потому что вы удалили IBOutlet label в своем коде ViewController.swift, не удаляя connection на раскадровке.

@IBOutlet weak var label: UILabel!

Чтобы решить эту проблему, щелкните правой кнопкой мыши по inputLabel в storyboard, нажмите кнопку "x" в label соединении следующим образом: Удалить удаленное соединение

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