我是编程新手,最近开始使用swift(xcode 9.4.1,swift 4.x)。解决方案可能很简单,但我不明白。 www中也有一些类似的问题和答案,但是它们具有不同的代码,我不知道如何适应它。所以我希望你能帮助我。谢谢!
我有一个iOS应用程序,可以保存体育赛事中的统计信息。我创建了两个名为Stat和Game的实体。到目前为止,使用以下代码可以进行保存:
@IBAction func saveButtonPressed(_ sender: UIButton) {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let stats = Stat(context: context)
stats.action = action
stats.playerNumber = Int32(playerOfAction)
stats.points = Int32(pointsOfAction)
let statsMinute = Game(context: context)
statsMinute.minute = Int32(currentMinute)
(UIApplication.shared.delegate as! AppDelegate).saveContext()
现在,我想获取并显示上次保存的统计信息(以后可以对其进行编辑)。 我正在尝试使用以下代码:
func lastStatInfo() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
let loadMin = try context.fetch(Game.fetchRequest()) as [Game]
lastStatMinuteLabel.text = "\(loadMin.minute)th minute"
} catch {
print("didn't load minute")
}
do {
let loadStat = try context.fetch(Stat.fetchRequest()) as [Stat]
lastStatActionLabel.text = loadStat.action
lastStatPlaylerLabel.text = "# \(loadStat.playerNumber)"
} catch {
print("didn't load stat")
}
}
有三个错误,例如
'Value of type '[Game]' has no member 'minute''.
为什么无法访问属性?我认为这是因为统计信息存储为数组。
如何正确获取数据?
问答:我为我的数据模型属性尝试了不同的类型。为了保存球衣号码和积分,似乎只有Int32起作用。您能告诉我为什么以及最好的存储方式吗?
答案 0 :(得分:0)
您的提取请求将返回一个数组作为结果(即使只有一个对象存在),因此您需要循环该数组或仅从特定索引中获取一个
for stat in loadMin {
var minute = stat.minute
//do stuff with minute
}
或
if !loadMin.isEmpty {
lastStatMinuteLabel.text = "\(loadMin[0].minute)th minute”
}
我通常只将Int用于整数值。