Быстрая ошибка: сигнал SIGABRT, как ее решить

Я просто новичок в Swift-кодировании. Моя идея довольно проста, это приложение с двумя кнопками. При щелчке текстовое поле изменит его текст. В Main.StoryBoard я добавляю текстовое поле и две кнопки. В файле ViewController.swift. Я пишу так:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var textfield: UITextField!
    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var button2: UIButton!

    @IBAction func action1(_ sender: UIButton) {
        textfield.text="you just clicked on button1"
    }
    @IBAction func action2(_ sender: UIButton) {
        textfield.text="you just clicked on button2"
    }
}

Предполагается, что все в порядке. Однако появляется ошибка, которая показывает:

thread1: сигнал SIGABRT

в файле AppDelegate.swift:

class AppDelegate: UIResponder, UIApplicationDelegate

Что не так с моим кодом?

Ответ 1

Я решаю проблему, очищая проект и восстанавливая его.

Чтобы очистить проект, перейдите в меню MenuBar: Product → Clean

Затем, чтобы восстановить, просто нажмите кнопку "Пуск", как обычно

Ответ 2

Вы получаете ошибку SIGABRT всякий раз, когда у вас отключена розетка. Нажмите на контроллер своего вида в раскадровке и перейдите к соединениям на боковой панели (символ стрелки). Посмотрите, есть ли у вас дополнительный выход, дубликат или дополнительный, который не подключен. Если это не так, то, возможно, вы не подключили свои выходы к вашему коду правильно.

Просто помните, что SIGABRT происходит, когда вы пытаетесь вызвать выход (кнопка, вид, текстовое поле и т.д.), Которого нет.

Ответ 3

Для меня это не выход. Я решил проблему, перейдя к ошибке И прочитав, что она сказала. (Также Noob..)

Это была ошибка:

enter image description here

И решение было здесь: enter image description here

Просто прокрутите вверх на выходе, и ошибка будет обнаружена.

Ответ 4

Общей причиной такого типа ошибок является то, что вы, возможно, изменили имя своего IBOutlet или IBAction, вы можете просто проверить это, перейдя в исходный код.

Нажмите на main.storyboard, а затем выберите open, а затем выберите исходный код enter image description here

исходный код откроется

а затем проверьте, есть ли имя измененного вами iboutlet или ibaction, если затем выберите часть и удалите ее, а затем снова создайте iboutlet или ibaction. Это должно решить вашу проблему

Ответ 5

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

Чинить:

Перейдите к инспектору подключения (стрелка в верхнем правом углу, в раскадровке) и удалите все неиспользуемые соединения.

Ответ 6

В моем случае я не получал ошибку, только сбой в AppDelegate, и мне пришлось снять флажок со следующей опции: OS_ACTIVITY_MODE, тогда я мог получить реальную причину сбоя в моем файле .xib

enter image description here

Надеюсь, что это может помочь вам тоже :)

Ответ 7

Если вы столкнетесь с этим в Xcode 10, вам придется выполнить очистку перед сборкой. Или переключитесь на устаревшую систему сборки. Файл → Настройки рабочего пространства... → Система сборки: Старая система сборки.

Ответ 8

В моем случае не было никакого журнала.

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

Ответ 9

Иногда это также происходит, когда функцию необходимо выполнить только в основном потоке, поэтому вы можете исправить ее, назначив ее основному потоку следующим образом: -

DispatchQueue.main.async{
  your code here
}

Ответ 10

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

длинная история:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        let gosetup = segue.destination as! Update
        gosetup.wherefrom = updatestring

    }

Это было сделано для всех, когда это было только для одного. Итак, я создал логическое значение и поместил в него gosetup.