gpt4 book ai didi

ios - 保存包含相同核心数据对象的多个数组

转载 作者:行者123 更新时间:2023-11-28 11:42:36 26 4
gpt4 key购买 nike

var done = [Item]()
var list = [Item]()

func loadItems() {
let request: NSFetchRequest<Item> = Item.fetchRequest()
do {
list = try context.fetch(request)
} catch {
print("Error fetching data from context: \(error)")
}
self.tableView.reloadData()
}

func saveItems() {
do {
try context.save()
} catch {
print("Error saving context: \(error)")
}
}

当我将列表中的项目标记为已完成时,我试图将其添加到已完成列表并将其从原始列表中删除。但是,saveItems() 方法不会保存已完成列表中的项目,并且 loadItems 方法不会加载已完成列表的项目。

最佳答案

When I mark an Item in the list as done I am trying to add it to the done list and delete it from the original list. However, the saveItems() method doesn't save the items in the done list and the loadItems method doesn't load the items for the done list.

有两种方法可以解决这个问题:

  1. 使 done 成为 Item 的属性。然后你可以保存所有项目而不用担心它们在哪个列表中。你可以获取所有项目并通过过滤掉标记为完成的项目来创建你的“待办事项”列表,并通过创建“完成”列表过滤掉未标记为完成的项目。获取请求可能比仅仅“获取所有项目”复杂得多。您可以改为说“获取所有 done 为假的项目。”

  2. 修复您的代码,使 loadsave 方法实际上加载和保存两个列表,并且项目的状态继续取决于哪个列出它。Core Data 非常擅长跟踪对象之间的关系,因此您可以轻松地拥有一个具有 donetodo 属性的对象,每个属性都是与 Item 的一对多关系,将项目标记为完成只是将项目从一组移动到另一组的问题。

关于ios - 保存包含相同核心数据对象的多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342442/

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