我正在探索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,现在在核心数据中查找并从该特定实例加载值”?
另外,现在看一下我问的问题,我对使用核心数据存储过期日期表示怀疑,是否有可能对此做些什么? (如果用户在轮到他们即将到期时提醒他们,或者因为不活动而轮到你的游戏会自动放弃游戏?)