Xcode 7 Swift 2错误:线程1:EXC_BAD_INSTRUCTION(code = EXC_1386_INVOP,SUBCODE = 0X0)
问题描述:
Ello!我正在使用swift作为语言,为mac制作笔记应用程序。我目前正在进行保存和加载功能,并且遇到了一个错误,我不知道如何解决。这里是有问题的代码:Xcode 7 Swift 2错误:线程1:EXC_BAD_INSTRUCTION(code = EXC_1386_INVOP,SUBCODE = 0X0)
import Cocoa
class NoteViewController: ViewController {
@IBOutlet weak var notefield: NSTextField!
@IBOutlet weak var savenamefield: NSTextField!
@IBOutlet weak var loadnamefield: NSTextField!
@IBAction func save(sender: AnyObject) {
// The line below gets the error: Thread 1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0
NSUserDefaults.standardUserDefaults().setObject(notefield.stringValue, forKey: savenamefield.stringValue)
}
@IBAction func load(sender: AnyObject) {
var name = loadnamefield.stringValue;
var lnote = NSUserDefaults.standardUserDefaults().objectForKey(name)
notefield.stringValue = lnote as! String
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}
我会做什么错?
答
我想通了。通过一些测试,我发现一切工作,直到我将notefield.stringValue添加到代码中。然后我意识到我有这个不同的窗口。代码覆盖3个不同的窗口,其中2个是弹出窗口。 notefield是我在主窗口代码中唯一的元素。我把所有的元素移动到同一个窗口,并重新编码了整个事物。我得到它使用以下代码很好:
import Cocoa
class NoteViewController: ViewController {
@IBOutlet weak var notefield: NSTextField!
@IBOutlet weak var savenamefield: NSTextField!
@IBOutlet weak var loadnamefield: NSTextField!
@IBAction func save(sender: AnyObject) {
NSUserDefaults.standardUserDefaults().setObject(notefield.stringValue, forKey: savenamefield.stringValue)
}
@IBAction func load(sender: AnyObject) {
notefield.stringValue = NSUserDefaults.standardUserDefaults().objectForKey((loadnamefield?.stringValue)!) as! String
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}
请注意,我只提供此代码作为指导。感谢您给予的帮助。
这很可能是非常喜爱的*意外发现零*错误。插座是否在Interface Builder中连接?第二个想法是:'load'方法中'lnote'是'nil'。顺便说一下,'NSUserDefaults'中有一个专用的'stringForKey'方法。 – vadian
我不知道关于stringforkey。我可能会尝试。感谢您的推荐! –
阅读文档并不伤害;-)有一些秘密可以发现...... – vadian