gpt4 book ai didi

swift - 核心数据对象已写入,但从未读取

转载 作者:行者123 更新时间:2023-11-30 10:51:35 25 4
gpt4 key购买 nike

当我尝试更新核心数据数据库中的现有条目时,我通过 ID 获取所需的项目,将其更改为新项目并保存在上下文中。

但是,当我获取对象并替换它时,我收到警告“核心数据对象已写入,但从未读取”。这确实有意义,因为我并没有真正使用该对象,但据我了解,只需给它一个值即可将其保存在核心数据中。

static var current: User? {
didSet {

if var userInCoreData = User.get(with: current?.id), let current = current { //userInCoreData is the value with the warning
userInCoreData = current
}

CoreDataManager.saveInContext()
}
}

static func get(with id: String?) -> User? {

guard let id = id else { return nil }

let request: NSFetchRequest = User.fetchRequest()

let predicate = NSPredicate(format: "id = %@", id)
request.predicate = predicate

do {
let users = try CoreDataManager.managedContext.fetch(request)
return users.first
} catch let error {
print(error.localizedDescription)
return nil
}

}

我想确定,这是覆盖核心数据中的值的推荐过程,还是我做错了什么?

最佳答案

本节

        if var userInCoreData = User.get(with: current?.id), let current = current { //userInCoreData is the value with the warning
userInCoreData = current
}

似乎只是更新局部变量userInCoreData,而不是核心数据中的User对象。

因此警告显示“您从核心数据中获取数据并设置为变量,但您很快为该变量设置了另一个值,永远不要使用核心数据中的第一个值。可以吗?”

你真正想做的就是这样的事情吗?

        if var userInCoreData = User.get(with: current?.id), let current = current { 
userInCoreData.someValue = current.someValue
userInCoreData.anotherValue = current.anotherValue
}

关于swift - 核心数据对象已写入,但从未读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com