println 中的错误... EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) swift

Posted

技术标签:

【中文标题】println 中的错误... EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) swift【英文标题】:Error in println... EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) swift 【发布时间】:2015-01-07 16:45:20 【问题描述】:

我一直在努力寻找解决该错误的方法..但无法并需要您的帮助..

我正在使用核心数据,特别是 NSFetchResultsController 来填充表格视图。 我有 2 个 VC,第一个(MyViewController)具有表格视图,第二个(AddToDoViewController)用于添加新单元格。第二个是通过第一个导航栏按钮的模态segue 调用的。

当我在第二个视图控制器上单击保存时,应用程序崩溃,没有错误描述,只有该行作为指示:EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)

如果我在第一个“UIAlertView”之前删除 println() 中的“error = (error)”,则应用程序不会再崩溃...无法理解为什么...感谢您的帮助,谢谢!

导入 UIKit 导入核心数据 导入基金会

类 AddToDoViewController: UIViewController, UITextFieldDelegate

@IBOutlet weak var textField: UITextField!
var managedObjectContext : NSManagedObjectContext?

override func viewDidLoad() 
    super.viewDidLoad()

    // Do any additional setup after loading the view.



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.



@IBAction func save(sender: UIBarButtonItem) 

    let name: String? = self.textField.text

    if name != "" 
        var itemEntity = NSEntityDescription.entityForName("Item", inManagedObjectContext: self.managedObjectContext!)

        if let entity = itemEntity 
            var record = NSManagedObject(entity: entity, insertIntoManagedObjectContext: self.managedObjectContext)
            var date = NSDate()
            record.setValue(name, forKey: "name")
            record.setValue(date, forKey: "createdAt")
            println("record inserted in managed context")
        

        var saveError: NSError? = NSError()
        var success: Bool = self.managedObjectContext!.save(&saveError)

        if let anError = saveError 
            println("unable to save record & success = \(success) & error = \(anError)")

            UIAlertView(title: "Warning!", message: "Your to-do item could not be saved", delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "").show()

         else 
            println("Save success with no error")
            self.dismissViewControllerAnimated(true, completion: nil)
        

     else 
        UIAlertView(title: "Warning!", message: "Your to-do item needs a name!", delegate: nil, cancelButtonTitle: "OK", otherButtonTitles: "").show()
    



@IBAction func cancel(sender: AnyObject) 
    self.dismissViewControllerAnimated(true, completion: nil)



/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.

*/

【问题讨论】:

看起来像下面这行“var saveError: NSError? = NSError()” 是问题所在。 SaveError 永远不会为零,因此应用程序永远不会进入第一个“else”。通过将该行替换为“var saveError: NSError?”它工作正常。尽管如此,我不明白为什么程序在第一次打印时没有任何解释就崩溃了..... 【参考方案1】:

当然 var saveError 永远不会为零。你已经在这里实例化了它:“var saveError: NSError?= NSError()” 要么像这样声明它“var saveError: NSError?”或者把这部分放在一起。

【讨论】:

我得到的那个...仍然不知道为什么它在我尝试显示“anError”的 println 上崩溃...无论如何都可以满足您的建议。

以上是关于println 中的错误... EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) swift的主要内容,如果未能解决你的问题,请参考以下文章

java错误System.out.println()出错

如何在字符串后添加到println中的数字

java中的数字格式异常,输入错误

在 Apache Felix (v 4.2.1) Gogo shell 上,未打印捆绑包中的 System.out.println

java中的thread.sleep(1000) 用法

Go中的错误处理