我正在做一个项目,在这个项目中,我应该将数据与核心数据一起保存在本地。
以下是我的工作流程:
我有一个条形按钮项目
,单击它可以显示最新填写的表单。
我尝试了这段代码,在这里我从数据库中获取数据,并影响到一个数组,但按钮接缝根本不工作,它从来没有被禁用。。。
class ViewController: UIViewController {
var userIdentity: UserIDentity = UserIDentity(context: PersistanceService.context)
var identityArray = [UserIDentity]()
override func viewDidLoad() {
super.viewDidLoad()
self.fetchIdentityHistoryArray()
}
func fetchIdentityHistoryArray(){
let fetchRequest: NSFetchRequest<UserIDentity> = UserIDentity.fetchRequest()
do {
let identityArray = try PersistanceService.context.fetch(fetchRequest)
if identityArray.isEmpty {
self.identityHistoryButton.isEnabled = false
}
else {
self.identityHistoryButton.isEnabled = true
}
}
catch {
print("Error fetching sworn statement history !")
}
}
}
所以我有两个问题:
如有任何帮助,我们将不胜感激。 谢谢
直接在代码中初始化核心数据对象
var userIdentity: UserIDentity = UserIDentity(context: PersistanceService.context)
这个新对象将存在于核心数据中,并且将在每次执行fetch请求时被包括在内。 您必须理解,核心数据不是数据库层,而是对象映射层,因此,即使您没有调用save()
,对象仍然存在于核心数据上下文中。
将声明更改为
var userIdentity: UserIDentity?
或者在不使用时将其完全删除。