CoreData iOS < 10

xcode
ios
swift3

#1

Всем добрый день! Вопрос по 2 курсу с сохранением записи в CoreData. Дело в том что NSPersistentContainer доступен только в iOS 10 и выше у меня телефон дальше 9.3 не обновляется((( начал изменять код под iOS ниже 10 и в следующем коде получаю ошибку:

@IBAction func saveButtonPressed(_ sender: UIBarButtonItem) {
    if nameTextField.text == "" || adressTextField.text == "" || typeTextField.text == "" {
        //print("не все поля заполнены")
        let alertController = UIAlertController(title: "Ошибка!", message: "Не все поля были заполнены!", preferredStyle: .alert)
        let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
        alertController.addAction(okAction)
        present(alertController, animated: true, completion: nil)
    } else {
        // tring to get context
        if let context = (UIApplication.shared.delegate as? AppDelegate)?.coreDataStack.managedObjectContext {
            **let restaurant = Restaurant(context: context)**
            restaurant.name = nameTextField.text
            restaurant.location = adressTextField.text
            restaurant.type = typeTextField.text
            restaurant.isVisited = isVisited
            if let image = imageView.image {
                restaurant.image = UIImagePNGRepresentation(image) as NSData?
            }
            
            do {
                try context.save()
                print("Сохранение удалось!")
            } catch let error as NSError {
                print("Не удлось сохранить данные \(error), \(error.userInfo)")
            }
        }
        
        performSegue(withIdentifier: "unwindSegueFromNewRestaurant", sender: self)
    }
} 

ошибка именно в строке со звездочками. Спасибо заранее!


#2

Еще раз всем добрый день! Ни кто не знает что с эти делать?


#3

#4

у меня немного другое, я свой блок поправил но запись все равно не проходит.

            let entity = NSEntityDescription.entity(forEntityName: "Restaurant", in: context)
            let restaurant = NSManagedObject(entity: entity!, insertInto: context)

            restaurant.setValue(nameTextField, forKey: "name")
            restaurant.setValue(adressTextField, forKey: "location")
            restaurant.setValue(typeTextField, forKey: "type")
            restaurant.setValue(isVisited, forKey: "isVisited")

            //if let image = imageView.image {
                //restaurant.image = UIImagePNGRepresentation(image) as NSData?
            //}

#5

В appdelegate правки внесли?


#6

Да внес, в том то и дело что при нажатии на cmd+B все собирается без ошибок, а когда уже в запущенном приложении на эмуляторе нажимаю сохранить то выскакиевает ошибка “Thread 1: signal SIGABRT”