首页 > 解决方案 > 刚刚在数据库中添加的元素在 CoreData Swift 中得到了父元素

问题描述

问题是:我有一个简单的应用程序来存储一些数据,我有两个 ViewController:CategoryViewController 和 ItemsViewController。

我正在尝试过滤数据以显示属于特定类别的项目。例如:类别“购买”应仅包含“Apples”、“Oranges”、“Pears”项目。但它只显示最后添加的项目。

func loadItems(with request: NSFetchRequest<Item> = Item.fetchRequest(), predicate: NSPredicate? = nil) {

    let categoryPredicate = NSPredicate(format: "parentCategory.name MATCHES %@", (selectedCategory?.name)!)

    if let additionalPredicate = predicate {
        request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [categoryPredicate,
                                                                                additionalPredicate])
    } else {
        request.predicate = categoryPredicate
    }

    do {
        itemArray =  try context.fetch(request)
    } catch {
        print("error fetching data from context\(error)")
    }

    tableView.reloadData()
}

所以我现在有 4 个类别,这是 sqlite 显示的,刚刚添加的项目有父值

在此处输入图像描述

标签: iosswiftcore-data

解决方案


解决了!我有关系“toOne”。在 DBName.xcdatamodeld 中将其更改为“toMany”,现在一切正常


推荐阅读