println出错... EXC_BREAKPOINT(代码= EXC_I386_BPT,子代码= 0x0)swift

时间:2015-01-07 16:45:21

标签: swift

我一直在努力寻找解决这个错误的方法..但是不能帮助你。

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

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

如果我在第一个“UIAlertView”之前删除了println()中的'error =(error)',那么应用程序就不会再崩溃了...无法理解为什么......帮助赞赏,thx!

导入UIKit 导入CoreData 进口基金会

类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.
}
*/

}

1 个答案:

答案 0 :(得分:0)

当然var saveError永远不会是零。你在这里实例化了它:" var saveError:NSError? = NSError()" 要么就像这样贬低" var saveError:NSError?"或者把这部分放在一起。