You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift UI操作Core Data异常:保存5条记录重启后仅显示1条

问题原因

你的Core Data只保存最后一条记录的核心问题在RedditViewModel的saveRecord方法中:你仅创建了一个ReditEntity实例,然后在遍历stories数组时反复覆盖这个实例的属性,最终只将最后一条story的数据保存到了Core Data中,而非每条story对应一个独立的实体。

修复方案

修改saveRecord方法,将创建ReditEntity的代码移动到forEach循环内部,确保每个story都生成一个新的Core Data实体:

public func saveRecord(viewContext: NSManagedObjectContext) {
    do {
        stories.forEach { story in
            // 每个story创建一个新的ReditEntity实例
            let redit = ReditEntity(context: viewContext)
            redit.title = story.title
            redit.numComments = Int64(story.numComments)
            redit.score = Int64(story.score)
            redit.urlImage = story.thumbnail
        }
        try viewContext.save()
    } catch {
        print(error.localizedDescription)
    }
}
额外建议
  • 为避免重复数据,可在保存前检查Core Data中是否已有相同记录(比如根据title或唯一标识符判断),防止每次启动重复插入。
  • 给ReditEntity添加唯一约束,从底层避免重复数据存储。

内容的提问来源于stack exchange,提问作者user8705895

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:46:05