我尝试编译我的第一个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)
我曾经有过这个
我更新了这个
重新开始并且仍在发生......
重新开始并且仍在发生......
答案 0 :(得分:10)
问题在您的标签中,我100%确定您删除了一些插座参考,并忘记从故事板中删除连接。请检查
答案 1 :(得分:4)
当您删除ViewController
中的引用来源并忘记从storyboard
删除连接时会发生此问题。
完美连接✅
完美的参考插座如下图所示。
现在让我们删除
中的引用插座.h
文件
问题⚠️
如果我们从.h
文件中删除引用插件,Xcode将在Storyboard中发出警告。这是你可以找到从课堂上删除哪个插座的技巧。
我希望这会对你有所帮助。
<强>解决方案强>
在您的情况下,您可能已将名称lable
更改为inputLable
,因此您需要执行以下操作:
删除与label
的连接。
将控制器重新连接到inputLabel
。
答案 2 :(得分:2)
代码和屏幕截图不一致。
label.text = "Hello World"
inputLabel.text = "Hello World"
错误消息是:
...与键标签不符合键值。
因此,在您的实际代码中,IBOutlet
很可能被命名为inputLabel
,但在Interface Builder中,与label
之间存在(死)连接,导致崩溃。
解决方案:
Main.storyboard
,在画布中选择ViewController
。 label
。inputLabel
。答案 3 :(得分:2)
答案 4 :(得分:1)
确保故事板元素已连接到代码中的插座。尝试删除连接检查器中的所有连接并重新连接元素
当您转到main.storyboard时,右侧有一个面板,最右边的是连接检查器。在那里你必须通过按下小&#39; x&#39;来删除连接。在连接中。
它应该看起来有点熟悉,但名字不同 in this screenshot
删除所有
也在你的viewController.swift文件中,删除所有@IBOutlet行。
然后再将您的插座连接到您之前执行的ViewController.swift文件
如果只是更改代码中的标签,它最终应该看起来像final screenshot
注意右边的插座
我希望这会对你有所帮助!
答案 5 :(得分:1)
由于您在IBOutlet
代码中删除了label
ViewController.swift
而未删除故事板上的connection
,因此崩溃了。
@IBOutlet weak var label: UILabel!
要解决此问题,请右键点击inputLabel
中的storyboard
,然后点击label
连接中的“x”按钮,如下所示:
注意:请不要忘记之前删除故事板中的连接 在代码中删除您的IBOutlet。
答案 6 :(得分:1)
其他人已经提到了关于网点及其参考资料,你必须确保它们已经正确地连接到你的班级。
我想到的另一个可能的情况可能是:如果您在故事板的SCNNode
标签中的SCNNode
下为您的标签定义了一个关键路径,并且该密钥未定义,那么您将在控制台日志中收到此消息错误:
user defined Rundtime Attributes
e.g。在下图中,您会看到一个键路径identity inspector
,如果它没有在您的标签类中定义,它将收到此错误消息。在某些情况下它会崩溃。请确保您在此部分中没有额外的密钥路径。
答案 7 :(得分:0)
这发生在我身上,因为我正在从另一个项目中复制一些文件(并重命名它们)。 Xcode感到困惑,显然在连接插座时遇到了困难。在Xcode中,一切看起来都很好,但我遇到了与运行时问题相同的错误,没有进一步的解释。
我通过清理项目并删除派生数据来修复它。一如既往..:/