如何制作 "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)
}
}
我正在构建一个 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)
}
}