如何在 Swift 中的 Core Data 中保存多个项目

Posted

技术标签:

【中文标题】如何在 Swift 中的 Core Data 中保存多个项目【英文标题】:How to save multiple items in Core Data in Swift 【发布时间】:2016-02-17 04:35:42 【问题描述】:

我有以下函数使用 Core Data 将结果传递给 ScoreTableViewController:

func showScore()

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let gameResult = NSEntityDescription.insertNewObjectForEntityForName("SaveGame", inManagedObjectContext: appDelegate.managedObjectContext) as! ScoreHistory

    gameResult.datePlayed = self.dateToday
    gameResult.totalScore = self.scorepassed
    gameResult.totalAnswered = self.numberofquestions
    gameResult.totalDuration = self.totalduration
    gameResult.gameStatus = self.gameStatus

    self.performSegueWithIdentifier("scoreListSegue", sender: self)

我可以通过以下方式在 ScoreTableViewController 中显示分数:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell")! as UITableViewCell

    if let game = fetchedResultsController!.objectAtIndexPath(indexPath) as? ScoreHistory 
        cell.textLabel?.text = "Date: \(game.datePlayed!) | Score: \(game.totalScore!)/\(game.totalAnswered!) | \(game.totalDuration!) | \(game.gameStatus!)"

    
    return cell

但是,当我重新启动应用程序时,数据不再存在。

我看过这段代码来保存“totalScore”数据:

func saveScore(saveTotalScore: String)

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext
    let entity = NSEntityDescription.entityForName("SaveGame", inManagedObjectContext: managedContext)
    let totalScore = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
    totalScore.setValue(saveTotalScore, forKey: "totalScore")

    do 
        try managedContext.save()
        scoreData.append(totalScore)
    
    catch 
        print("error")
    

但是,如何保存我需要的所有数据? (例如:datePlayed、totalScore、totalAnswered、totalDuration 和 gameStatus)

【问题讨论】:

【参考方案1】:

最简单的方法是在您将要保存的所有内容填充到 gameResult 对象之后执行类似的操作。

 do 
   try appDelegate.managedObjectContext.save()
  catch 
    fatalError("Failure to save context: \(error)")
 

您需要在适当的 managedObjectContext 上调用 save 才能存储对象。

链接到解释它的苹果文档here

【讨论】:

以上是关于如何在 Swift 中的 Core Data 中保存多个项目的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中的 Core Data 中保存数据

IOS Swift Core Data如何在propertiesToFetch中添加不在propertiesToGroupBy中的字段

如何使用swift 3仅获取Core Data中的一列数据

如何在 Documents 文件夹中保存 UIImagePicker 中的 UIImage 并获取路径字符串以保存在 Swift 中的 Core Data 中

如何在 NSUserDefaults Swift 2.3 中保存单例对象?

如何在 Swift 应用程序中保存本地数据?