2016-12-05 209 views
-2

下面的代码:斯威夫特信号SIGABRT错误

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线,这是写在迅速2,我改变了所有的代码,以迅速3,但这一行给了我一个信号SIGABRT错误。

+0

请检查我的答案 –

回答

2

看起来像访问托管对象的界面从swift2更改为swift3。在本question/answer解释,看起来像你的情况,你需要:

let mark = Friend(context: context) 
mark.name = "Vuyo Nkabinde" 
mark.profileImageName = "zuckprofile" 
1

根据我的雨燕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...] 
1

它应该是这样的斯威夫特卡伦特3:

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

请检查Swift 3的语法,如上所述。

希望是帮助