从核心数据加载何时何地?

时间:2017-12-06 10:13:27

标签: ios swift xcode core-data

我正在探索Core Data,并在youtube上做了一些例子。做完一对之后,我觉得已经准备好将Core Data应用到我的游戏应用程序中。 现在,只需一个快速,游戏是回合制的,你有24小时完成你的回合,所以你可以同时有多个游戏。
首先,我想知道我的方法是否正确:
- 我使用CoreData存储当前游戏的重要因素(得分,转弯,到期日,比赛ID)
- 我想将“已保存”的游戏(或正在进行的)加载到TableView中,然后当用户点击它时,使用该matchID中的变量加载GameViewController。 至于保存,我认为我有正确的代码,但是在尝试加载时我碰到了一堵墙:

func loadCurrentGame()
    {
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        do {
            try context.fetch(MatchData.fetchRequest()) //How to filter to current game and load it's variables?
        }
        catch {
            print("Error Loading Data: \(error)")
        }

    }

    func saveCurrentGame()
    {
        let dateOfSave = Date()

        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

        let thisMatch = MatchData(context: context)
        thisMatch.isrealtime = isRealTime
        print ("is Real Time: \(thisMatch.isrealtime)")
        thisMatch.matchid = currentMatchID
        print ("match ID: \(String(describing: thisMatch.matchid))")
        thisMatch.myscore = Int16(score)
        print ("Score: \(thisMatch.myscore)")
        thisMatch.turnexpdate = Calendar.current.date(byAdding: .second, value: Int(timeToAnswer), to: dateOfSave)
        print ("exp Date: \(String(describing: thisMatch.turnexpdate))")

        (UIApplication.shared.delegate as! AppDelegate).saveContext()
    }

函数loadCurrentGame在GameViewController中,但是我不知道如何从另一个视图控制器(带有tableview的视图控制器)传递数据。如何告诉视图控制器“嘿,这是匹配ID XYZ,现在在核心数据中查找并从该特定实例加载值”?
另外,现在看一下我问的问题,我对使用核心数据存储过期日期表示怀疑,是否有可能对此做些什么? (如果用户在轮到他们即将到期时提醒他们,或者因为不活动而轮到你的游戏会自动放弃游戏?)

0 个答案:

没有答案