【发布时间】:2021-06-28 06:50:27
【问题描述】:
我目前正在制作一个基于 CoreData 的食谱应用程序,其中有属于某个类别的类别和食谱。 我的问题是我不知道如何只获取正确的食谱。例如,当按下“意大利面食”时,你会转到一个包含所有意大利面食食谱的 vc。
我已成功获取类别的数据,并将数据传递到 recipeVC。但我不知道如何正确查询。我试过这个:
var category: Category!
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
func fetchAndSetResults() {
do {
let request = Recipe.fetchRequest() as NSFetchRequest<Recipe>
let pred = NSPredicate(format: "category CONTAINS %@", category.name!)
request.predicate = pred
self.recipes = try context.fetch(request)
} catch let err as NSError {
print(err.localizedDescription)
}
}
在类别VC中:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ToRecipes" {
if let destination = segue.destination as? RecipeVC {
destination.category = selectedCategory
}
}
}
在我的食谱实体中,我有一个属性“类别”:字符串
谢谢!
【问题讨论】:
-
您是否在 2 个实体之间建立了关系?
-
不,我没有。这是这样做的方法吗?如果是这样 - 如何? :) @JoakimDanielson
-
这是一件非常常见的事情,也是您作为 Core Data 开发人员应该知道的一部分。幸运的是,找到有关该主题的教程和文章应该没有问题。一旦你研究并实现了它们,你就可以跳过整个 fetch 请求和谓词,只需执行类似于
self.recipes = category.recipes的操作 -
是的,我阅读了文档,并成功地在两者之间建立了关系。当我输入您的代码时,它显示无法分配“配方?”类型的值输入“[食谱]”我该如何解决这个问题? @JoakimDanielson 谢谢
-
听起来像你。从类别到配方有一对一的关系,我认为它应该是一对多的关系