繁体   English   中英

错误:“线程 1:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)

[英]error: "Thread 1: EXC_BAD_ACCESS(Code=EXC_I386_GPFLT)

我在这里需要帮助。 我正在尝试使用核心数据来实现一个应用程序。 但是在第 52 行 -

myHood.setMyHoodImg(addHoodImg.image!))

每次单击按钮创建新引擎盖时都会出错。 错误:

“线程 1:EXC_BAD_ACCESS(代码=EXC_I386_GPFLT)

这是代码:

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")
        }
    }

}

}

这真的很简单:

如果你写:

myHood.setMyHoodImg(addHoodImg.image!)

您假设 addHoodImg.image 确实存在,但在第一次运行时,如果您没有选择图像,则为 NIL。 所以有2种方式:

1)简单地写:

if let hoodDescription = hooddesc.text where hoodDescription  != "" , let img = addHoodImg.image {

2) 在开始时禁用按钮并在选择和图像后启用。

希望这有帮助。

ps 我在这里有一个功能齐全的原型,其中包含您使用的(减少的!)类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM