2016-02-16 20 views
0

我是使用Swift进行编码的新手,我试图在核心数据文件中写入两个文本字段。我已经通过在线搜索找出了大部分我需要的代码,但是我得到了一个我无法弄清楚的错误。我已经发布了下面的整个保存功能代码,但是我在以managedObjectContext开头的行上得到了一个“不能在可选值类型为'NSManagedObjectContext'的非可选值上使用可选链接”的错误。使用Swift写入核心数据时出现错误代码的问题

@IBAction func saveData(sender: AnyObject) { 
    let entityDescription = NSEntityDescription.entityForName("MatchData", inManagedObjectContext: managedObjectContext) 

    let matchData = MatchData(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext) 

    matchData.teamNumber = teamNumber.text 
    matchData.matchNumber = matchNumber.text 

    var error: NSError? 

    managedObjectContext?.save(error) 

    if let err = error { 
     status.text = err.localizedFailureReason 
    } else { 
     teamNumber.text = "" 
     matchNumber.text = "" 
    } 
} 

我在Xcode最新版本的工作,我认为这个问题有东西在斯威夫特的变化,但我不能算出它,因为我是新手。任何帮助调试将不胜感激。

回答

1

do, try, catch声明在哪里?如果要将对象保存到managedObjectContext,则必须使用如下语句:do { try manaagedObjectContext.save() } catch { // handle error }

请试试看!希望它可以帮助

`@IBAction FUNC SAVEDATA(发件人:AnyObject){

让entityDescription:MatchData = NSEntityDescription.insertNewObjectForEntityForName( “MatchData”,inManagedObjectContext:managedObjectContext)为! MatchData

entityDescription.teamNumber = self.teamNumber.text 
entityDescription.matchNumber = self.matchNumber.text 

do { try managedObjectContext.save() } catch { /*Handle error*/ } 

打印(entityDescription) }`

+0

感谢您对如何构建代码的建议。我尝试过使用do,尝试并捕获,但无法弄清楚如何实现它。 –

+0

我编辑了我的答案!请试试看。 –

+0

谢谢。这真的有帮助。 –