ошибка: «Поток 1: EXC_BAD_ACCESS (код = EXC_I386_GPFLT)

ios iphone swift

5586 просмотра

1 ответ

Мне нужна помощь здесь. Я пытаюсь использовать основные данные для реализации приложения. Но на линии 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")
        }
    }

}

}
Автор: Perfect Aduh Источник Размещён: 08.11.2019 11:18

Ответы (1)


0 плюса

это действительно просто:

если ты пишешь:

myHood.setMyHoodImg(addHoodImg.image!)

вы предполагаете, что addHoodImg.image существует, но при первом запуске это NIL, если вы не выбрали изображение. Итак, 2 способа:

1) просто напиши:

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

2) отключить кнопку запуска и включить после выбора и изображения.

Надеюсь, это поможет.

PS У меня есть полностью функциональный прото здесь с (сокращенными!) классами, которые вы используете.

Автор: ingconti Размещён: 20.08.2016 01:02
Вопросы из категории :
32x32