Ответ 1
Проблема в ваших ярлыках, я на 100% уверен, что вы удалили ссылки на некоторые ссылки и не забыли удалить соединение с доски объявлений. Пожалуйста, проверьте
Я попытался скомпилировать свое первое приложение 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.
}
}
Получение 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)
Я использовал этот
Я обновился до этого
Повторное выполнение и все еще происходит...
Повторное выполнение и все еще происходит...
Проблема в ваших ярлыках, я на 100% уверен, что вы удалили ссылки на некоторые ссылки и не забыли удалить соединение с доски объявлений. Пожалуйста, проверьте
В коде и снимок экрана есть несогласованность.
label.text = "Hello World"
inputLabel.text = "Hello World"
Сообщение об ошибке:
... не соответствует ключевому значению для ключевого ярлыка .
Таким образом, скорее всего, в вашем фактическом коде IBOutlet
называется inputLabel
, но в Interface Builder существует (мертвое) соединение с label
, которое вызывает сбой.
Решение:
Main.storyboard
в панели навигации и ViewController
в холсте.label
.inputLabel
.Убедитесь, что элементы раскадровки подключены к выходам вашего кода. Попробуйте удалить все подключения в инспекторе соединений и снова подключить элементы
Когда вы переходите на main.storyboard, справа у вас есть панель, наиболее подходящая для инспектора соединений. Там вы должны удалить соединение, нажав маленькое "x" в соединениях.
Он должен выглядеть несколько знакомым, но разные имена в этом скриншоте
удалить все из них
также в вашем файле viewController.swift, удалите все строки @IBOutlet.
Затем снова подключите свои розетки к файлу ViewController.swift, который вы делали до
Чтобы просто сменить метку в коде, она должна выглядеть следующим образом окончательный скриншот
умьте выход справа
Я надеюсь, что это поможет вам!
Другие упомянули о торговых точках и их ссылках, которые вы должны убедиться в том, что они правильно подключились к вашему классу.
Еще один возможный случай, возможно, следующий: если вы определили ключевой путь для своего ярлыка под user defined Rundtime Attributes
на вкладке identity inspector
в раскадровке, а если ключ undefined, вы получите это сообщение об ошибке в журнале консоли:
...this class is not key-value compliant for the key label.
например. на изображении ниже вы видите путь ключа popupTitle
, если он не определен в вашем классе метки, он получит это сообщение об ошибке. и в некоторых случаях он потерпит крах. Убедитесь, что в этом разделе нет дополнительного ключа.
У вас установлен флажок по умолчанию для IBOutlet.
Эта проблема возникает, если вы удаляете ссылку на выход в ViewController
и забудьте удалить соединение из storyboard
.
Идеальное соединение ✅
Идеальная ссылочная розетка выглядит как снимок экрана.
Теперь позвольте удалить референс-выход из
.h
файла
Проблема ⚠️
если мы удалим ссылку на выход из .h
файла, Xcode даст предупреждение в раскадровке. это трюк, который вы можете найти, какой выход был удален из класса.
Надеюсь, это поможет вам.
Решение
В вашем случае вы, возможно, изменили имя lable
на inputLable
, поэтому вам нужно сделать:
Удалите соединение с label
.
Подключите контроллер к inputLabel
.
Он разбился, потому что вы удалили IBOutlet
label
в своем коде ViewController.swift
, не удаляя connection
на раскадровке.
@IBOutlet weak var label: UILabel!
Чтобы решить эту проблему, щелкните правой кнопкой мыши по inputLabel
в storyboard
, нажмите кнопку "x" в label
соединении следующим образом:
Примечание. Пожалуйста, не забудьте удалить соединение в раскадровке раньше удаление вашего IBOutlet в коде.