ios - 使用 Core Data 检索数据
问题描述
我正在做一个项目,我应该使用 Core Data 在本地保存数据。
这是我的工作流程:
我有一个bar button item
点击后可以显示最新填写的表格。
- 我应该测试填充表单的数组是否为空,然后应该禁用该按钮。
- 否则,应启用该按钮...
我尝试了这段代码,我从数据库中获取数据并影响到一个数组,但按钮接缝根本不起作用,它永远不会被禁用......
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)
这个新对象将存在于 Core Data 中,并且每次执行 fetch 请求时都会包含在内。您必须了解 Core Data 不是数据库层,它是对象映射层,因此即使您尚未调用save()
该对象,该对象仍存在于 Core Data 上下文中。
要么将声明更改为
var userIdentity: UserIDentity?
如果不使用,则将其完全删除。
推荐阅读
- ios - 如何修复词法或预处理器问题“Flutter/Flutter.h”未找到
- html - github页面的自定义子域
- drupal - 如何为每个 Drupal 7 页面请求添加特定的 HTTP 标头?
- pdf - 为什么 NextJs 不在 Heroku 上生成这个文件?
- javascript - 按钮单击应将项目添加到数组中,但每次函数调用时数组为空
- python - 如何使用 BeautifulSoup 遍历多个 URL 并返回单个列表而不是列表列表?
- swagger - 如何创建一个接受请求中的对象和文件的 OpenAPI 端点?
- windows - 在 Windows 中运行批处理文件时显示 %variables% 为空白/缺失
- r - R 中的 H2o AutoML:XGBoost 不可用;跳过它
- c# - 可选属性和可为空的引用应该如何协同工作?