迅捷:无法从coredata获取实体成员

时间:2018-07-25 16:47:47

标签: ios arrays swift core-data fetch

我是编程新手,最近开始使用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起作用。您能告诉我为什么以及最好的存储方式吗?

1 个答案:

答案 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用于整数值。