我正在学习快速,并且尝试从CoreData
删除对象时遇到问题
我的应用程序有两页,一页是搜索(用于搜索食谱),另一页是收藏夹页面(我在其中放置自己喜欢的食谱)
当我在搜索页面中转到食谱的详细信息时,便可以向收藏夹中添加食谱或从中删除食谱(一切正常),但是当我不想从“收藏夹”页面中删除收藏夹时,应用程序崩溃,“在解开可选包时发现nil”
var storage = RecipeStorageManager()
var recipeDetail: Hit!
var recipe: RecipeToSave
var isFavorite: Bool {
return storage.fetchAll().contains(where: { $0.url == self.recipeDetail.recipe.url })
}
let request: NSFetchRequest<RecipeToSave> = RecipeToSave.fetchRequest()
@objc func favTapped(_ sender: Any!) {
if isFavorite == true {
print("favvv")
removeFromFav()
} else {
addToFav()
navigationItem.rightBarButtonItem?.tintColor = .green
}
}
func addToFav() {
recipe = storage.insertRecipe(label: recipeDetail.recipe.label,
url: recipeDetail.recipe.url,
image: recipeDetail.recipe.image,
ingredientLines: recipeDirections.text,
totalTime: recipeDetail.recipe.totalTime)
print("added fav")
storage.save()
}
func removeFromFav() {
storage.remove(recipeID: recipe.objectID)
print("removed")
storage.save()
navigationController?.popViewController(animated: true)
}
答案 0 :(得分:0)
你在说
var recipeDetail: Hit!
var isFavorite: Bool {
return storage.fetchAll().contains(where: { $0.url == self.recipeDetail.recipe.url })
}
因此,每当您在代码中说出recipeDetail
或isFavorite
时,如果recipeDetail
是nil
,您就会崩溃。