[英]error: "Thread 1: EXC_BAD_ACCESS(Code=EXC_I386_GPFLT)
I need help here.我在这里需要帮助。 I am trying to use core data to implement an app.
我正在尝试使用核心数据来实现一个应用程序。 But on line 52 -
但是在第 52 行 -
myHood.setMyHoodImg(addHoodImg.image!))
I having an error each time a click the button to create a new hood.每次单击按钮创建新引擎盖时都会出错。 The error:
错误:
"Thread 1: EXC_BAD_ACCESS(Code=EXC_I386_GPFLT)
“线程 1:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)
Here is the code:这是代码:
import UIKit
import CoreData
class CreateHoodVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var hooddesc: UITextField!
@IBOutlet weak var addHoodImgBtn: UIButton!
@IBOutlet weak var addHoodImg: UIImageView!
var imagePicker: UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
imagePicker = UIImagePickerController()
imagePicker.delegate = self
addHoodImg.layer.cornerRadius = 4.0
addHoodImg.clipsToBounds = true
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
imagePicker.dismissViewControllerAnimated(true, completion: nil)
addHoodImg.image = image
}
@IBAction func addImage(sender: AnyObject!){
presentViewController(imagePicker, animated: true, completion: nil)
}
@IBAction func createHood(){
if let hoodDescription = hooddesc.text where hoodDescription != ""{
let app = UIApplication.sharedApplication().delegate as! AppDelegate
let context = app.managedObjectContext
let entity = NSEntityDescription.entityForName("MyHood", inManagedObjectContext: context)!
let myHood = MyHood(entity: entity, insertIntoManagedObjectContext: context)
myHood.myHoodDescription = hoodDescription
myHood.setMyHoodImg(addHoodImg.image!)
context.insertObject(myHood)
do {
try context.save()
} catch {
print("Could not save new Hood")
}
}
}
}
it's really simple:这真的很简单:
if You write:如果你写:
myHood.setMyHoodImg(addHoodImg.image!)
you are supposing addHoodImg.image DOES exist, but on first run, is NIL, if You did not choose an image.您假设 addHoodImg.image 确实存在,但在第一次运行时,如果您没有选择图像,则为 NIL。 so 2 ways:
所以有2种方式:
1) simply write: 1)简单地写:
if let hoodDescription = hooddesc.text where hoodDescription != "" , let img = addHoodImg.image {
2) disable button on start AND enable after choosing and image. 2) 在开始时禁用按钮并在选择和图像后启用。
Hope this help.希望这有帮助。
ps I have a fully functional proto here with (reduced!) classes you use. ps 我在这里有一个功能齐全的原型,其中包含您使用的(减少的!)类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.