Ответ 1
Я решаю проблему, очищая проект и восстанавливая его.
Чтобы очистить проект, перейдите в меню MenuBar: Product → Clean
Затем, чтобы восстановить, просто нажмите кнопку "Пуск", как обычно
Я просто новичок в 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
Что не так с моим кодом?
Я решаю проблему, очищая проект и восстанавливая его.
Чтобы очистить проект, перейдите в меню MenuBar: Product → Clean
Затем, чтобы восстановить, просто нажмите кнопку "Пуск", как обычно
Вы получаете ошибку SIGABRT всякий раз, когда у вас отключена розетка. Нажмите на контроллер своего вида в раскадровке и перейдите к соединениям на боковой панели (символ стрелки). Посмотрите, есть ли у вас дополнительный выход, дубликат или дополнительный, который не подключен. Если это не так, то, возможно, вы не подключили свои выходы к вашему коду правильно.
Просто помните, что SIGABRT происходит, когда вы пытаетесь вызвать выход (кнопка, вид, текстовое поле и т.д.), Которого нет.
Для меня это не выход. Я решил проблему, перейдя к ошибке И прочитав, что она сказала. (Также Noob..)
Это была ошибка:
Просто прокрутите вверх на выходе, и ошибка будет обнаружена.
Общей причиной такого типа ошибок является то, что вы, возможно, изменили имя своего IBOutlet или IBAction, вы можете просто проверить это, перейдя в исходный код.
Нажмите на main.storyboard, а затем выберите open, а затем выберите исходный код
исходный код откроется
а затем проверьте, есть ли имя измененного вами iboutlet или ibaction, если затем выберите часть и удалите ее, а затем снова создайте iboutlet или ibaction. Это должно решить вашу проблему
У меня такая же проблема. Я сделал кнопку в раскадровке и подключил ее к ViewController, а затем удалил кнопку. Таким образом, соединение все еще было, но кнопки не было, и поэтому я получил ту же ошибку, что и вы.
Чинить:
Перейдите к инспектору подключения (стрелка в верхнем правом углу, в раскадровке) и удалите все неиспользуемые соединения.
В моем случае я не получал ошибку, только сбой в AppDelegate, и мне пришлось снять флажок со следующей опции: OS_ACTIVITY_MODE
, тогда я мог получить реальную причину сбоя в моем файле .xib
Надеюсь, что это может помочь вам тоже :)
Если вы столкнетесь с этим в Xcode 10, вам придется выполнить очистку перед сборкой. Или переключитесь на устаревшую систему сборки. Файл → Настройки рабочего пространства... → Система сборки: Старая система сборки.
В моем случае не было никакого журнала.
Моя ошибка заключалась в том, чтобы нажать контроллер представления в стеке навигации, которое уже было частью стека навигации.
Иногда это также происходит, когда функцию необходимо выполнить только в основном потоке, поэтому вы можете исправить ее, назначив ее основному потоку следующим образом: -
DispatchQueue.main.async{
your code here
}
Для меня эта ошибка была из-за того, что у меня был подготовительный этап, который не был применим к переходу, который был сделан.
длинная история:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let gosetup = segue.destination as! Update
gosetup.wherefrom = updatestring
}
Это было сделано для всех, когда это было только для одного. Итак, я создал логическое значение и поместил в него gosetup.