如何制作 "Add to favourites" 并显示在 Swift 4 的收藏夹列表中?

How to make an "Add to favourites" and show in favourite list in Swift 4?

我正在构建一个 table 查看应用程序。细胞上有图像。我的问题是,如何将图像添加到“收藏夹”?在 'favorite' 页面中,我想查看位于其他视图控制器中的单元格上的图像。如何制作 'Add to Favorite'按钮以及如何将数据添加到收藏夹页面?有人可以帮助我吗?如果有人帮助我,我将不胜感激。我正在使用 Swift 4,我是 Swift 的新手。

按照步骤实现。

第 1 步:在您的项目中创建一个 'CoreData' 模型。

第 2 步:在 CoreData

中保存图像详细信息

第 3 步:从 CoreData 获取并在另一个视图控制器中显示它

详细了解 CoreData

你可以这样做:

    @IBAction func isFavoriteButtonTapped(_ sender: UIButton) {
        
        let buttonPosition = sender.convert(CGPoint.zero, to: self.tableView)
        guard let indexPath = self.tableView.indexPathForRow(at: buttonPosition) else { return }
        guard let shoe_ID = sneakerModel[indexPath.row].ID else { return }
        
        let checkFavorite = CoreDataManager.sharedInstance.loadIsFavorite(shoe_ID: shoe_ID)
        
        if checkFavorite == true {
            sender.setImage(UIImage(systemName: "star"), for: .normal)
            CoreDataManager.sharedInstance.updateIsFavorite(shoe_ID: shoe_ID, isFavorite: false)
        } else if checkFavorite == false {
            sender.setImage(UIImage(systemName: "star.fill"), for: .normal)
            CoreDataManager.sharedInstance.updateIsFavorite(shoe_ID: shoe_ID, isFavorite: true)
        }
    }
}

核心数据资料:

func loadIsFavorite(shoe_ID: String) -> Bool{
    
    let request: NSFetchRequest<Project> = NSFetchRequest< Project >(entityName: "Project")
    var favorite = Bool()
    
    do {
        let sneaksObject = try context.fetch(request)
        
        
        for i in 0..<sneaksObject.count {
            if shoe_ID == sneaksObject[i].shoe_ID {
                favorite = sneaksObject[i].isFavorite
            }
        }
        
    } catch {
        print(error.localizedDescription)
    }
    
    return favorite
}

func updateIsFavorite(shoe_ID: String, isFavorite: Bool) {
    
    let request: NSFetchRequest< Project > = NSFetchRequest< Project >(entityName: "Project")
    do {
        let sneaksObject = try context.fetch(request)
        
        for i in 0..<sneaksObject.count {
            if shoe_ID == sneaksObject[i].shoe_ID {
                sneaksObject[i].setValue(isFavorite, forKey: "isFavorite")
                saveContext()
            }
        }
        saveContext()
        
    } catch {
        print(error.localizedDescription)
    }
    
}