Ошибка SIGABRT сигнала Swift

Вот код:

 func setupData() {

    clearData()

    let delegate = UIApplication.shared.delegate as? AppDelegate

    if let context = delegate?.persistentContainer.viewContext {



        let mark = NSEntityDescription.insertNewObject(forEntityName: "Friend", into: context) as! Friend
        mark.name = "Vuyo Nkabinde"
        mark.profileImageName = "zuckprofile"


        let message = NSEntityDescription.insertNewObject(forEntityName: "Message", into: context) as! Message
        message.friend = mark
        message.text = "Hello, my name is Mark. Nice to meet you..."
        message.date = NSDate()

        let steve = NSEntityDescription.insertNewObject(forEntityName: "Friend", into: context) as! Friend
        steve.name = "Steve Jobs"
        steve.profileImageName = "steve_profile"

        let messagesSteve = NSEntityDescription.insertNewObject(forEntityName: "Message", into: context) as! Message
        messagesSteve.friend = steve
        messagesSteve.text = "Code is the most innovative company I have ever seen..."
        messagesSteve.date = NSDate()

        do {
        try(context.save())
        } catch let err {
            print(err)

        }

    }

Моя проблема связана со строкой let mark = NSEntityDescription.insertNewObject(forEntityName: "Friend", into: context) as! Friend, она была написана на Swift 2, и я изменил весь код на Swift 3, но эта конкретная строка выдает ошибку SIGABRT.


person zeus makgoba    schedule 05.12.2016    source источник
comment
пожалуйста, проверьте мой ответ   -  person Jitendra Modi    schedule 24.12.2016


Ответы (3)


Похоже интерфейс доступа к управляемым объектам изменился с swift2 на swift3. Как объясняется в этом вопросе/ответе, выглядит как в вашем случае нужно:

 let mark = Friend(context: context)
 mark.name = "Vuyo Nkabinde"
 mark.profileImageName = "zuckprofile"
person BHendricks    schedule 20.12.2016

На основе моего приложения Swift 3.0:

let entity = NSEntityDescription.entity(forEntityName: "Friend", in: context)
let mark = Friend(entity: entity!, insertInto: context)
mark.name = "Vuyo Nkabinde"
mark.profileImageName = "zuckprofile"

[etc...]
person Ron Diel    schedule 20.12.2016

В Swift 3 должно быть так:

let employee = NSEntityDescription.insertNewObjectForEntityForName("Friend", inManagedObjectContext: context) as! Friend

Пожалуйста, проверьте синтаксис для Swift 3, это вроде выше.

Надежда помогает

person Jitendra Modi    schedule 24.12.2016