ios - 更新和编辑 CoreData 中的实体

标签 ios swift uitableview core-data

我正在开发一个应用程序,用户可以在其中创建一个包含多个项目的列表。我的 CoreData 模型如下。

enter image description here

下面的代码获取 list.contains 关系并将其存储为 itemsOnList Set,然后用 Set 中的每个 Item 填充 UITableView

func getItemsOnList(){

    let app = UIApplication.shared.delegate as! AppDelegate
    let context = app.persistentContainer.viewContext

    //fetchRequest to get the List
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "List")
    let predicate = NSPredicate(format: "title == %@", listName)
    fetchRequest.returnsObjectsAsFaults = false
    fetchRequest.predicate = predicate

    if let fetchResults = try? context.fetch(fetchRequest){
        if fetchResults.count > 0 {
            for listEntity in fetchResults {
                let list = listEntity as! List
                print(list.title as Any)
                itemsOnListSet = list.contains!
            }
        }
    }
}

我希望用户能够更改商品的名称或数量。

我这样做的第一种方法是,因为我已经有了项目的 NSSet,所以我只需更改我想要的项目,然后用新的列表保存旧列表。

这会是一个明智的做法吗?还是有更简单的方法来做到这一点?

谢谢

最佳答案

contains 重命名为 items 以便描述它是什么。 (编辑:还将 belongsTo 重命名为 list)

因此,要访问链接到列表的项目,它只是 list.items,更清晰。

现在,如果您想编辑一个项目,只需将其从该集合中取出并编辑即可,关系不会改变。如果您想添加或删除项目,您只需再次触摸 list.items

关于ios - 更新和编辑 CoreData 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41821781/

相关文章:

ios - 在 iPhone 中使用数组动态创建 tableView 部分

ios - 未调用 cellForRowAtIndexPath

ios - 除非重新打开应用程序,否则不会显示 UIAlertView 键盘

objective-c - 从我自己的包中加载 Nib ?

ios - Swift:如何在 UIAlertController 中添加自定义输入 View ?

ios - 为什么在使用 TextKit 呈现文本时第二行最终会比第一行短?

ios - 让应用程序在越狱设备上自行重启

ios - 自定义 UITableviewCell 标签位置

swift - 是什么让 Swift 中的调用变得昂贵?

ios - 第一个单元格顶部的 tableHeaderView