println 错误... EXC_BREAKPOINT(代码=EXC_I386_BPT,子代码=0x0)swift
Error in println... EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) swift
我一直在努力寻找解决该错误的方法..但不能并且需要你的帮助..
我正在使用核心数据,特别是 NSFetchResultsController 来填充 table 视图。
我有 2 个 VC,第一个(MyViewController)具有 table 视图,第二个(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 永远不会是 nil。您已在此处实例化它:"var saveError: NSError? = NSError()"
要么像这样声明它 "var saveError: NSError?" 要么把这部分放在一起。
我一直在努力寻找解决该错误的方法..但不能并且需要你的帮助..
我正在使用核心数据,特别是 NSFetchResultsController 来填充 table 视图。 我有 2 个 VC,第一个(MyViewController)具有 table 视图,第二个(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 永远不会是 nil。您已在此处实例化它:"var saveError: NSError? = NSError()" 要么像这样声明它 "var saveError: NSError?" 要么把这部分放在一起。