传送操作数据。 错误是我无法到达第二个TableView中的变量。
错误:无法分配类型为“FAV?”的值 to类型“[Fav]”,实例成员“Get Fav”不能用于类型“FavouriteTableVc”; 您的意思是改用此类型的值吗?
结构数据
struct Fav {
var image: UIImage?
var name: String
var price: String
static let favName = ["Faaaak", "Dunc"]
static func getFav() -> [Fav] {
var favourites = [Fav]()
for fav in favName {
favourites.append(Fav(image: nil, name: fav, price: "29.000"))
}
return favourites
}
}
第一表单元
class DivanCell: UITableViewCell {
var fav: Fav?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
@IBOutlet weak var divanNameLabel: UILabel!
@IBOutlet weak var divanPhoto: UIImageView!
@IBOutlet weak var priceLabel: UILabel!
@IBOutlet weak var sizeDivan: UILabel!
@IBOutlet weak var favButton: UIButton!
@IBAction func favTapped(_ sender: Any) {
favButton.setImage(UIImage(systemName: "heart.fill"), for: UIControl.State.normal)
favTapped(favNext: FavouriteTableVC())
}
func favTapped(favNext: FavouriteTableVC) {
fav = Fav(image: divanPhoto.image, name: divanNameLabel.text!, price: priceLabel.text!)
FavouriteTableVC.getFav = fav // Error: Cannot assign value of type 'Fav?' to type '[Fav]' and Instance member 'getFav' cannot be used on type 'FavouriteTableVC'; did you mean to use a value of this type instead?
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
第二个表viewvc
class FavouriteTableVC: UITableViewController {
var getFav = Fav.getFav()
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var favName: UILabel!
@IBOutlet weak var favPrice: UILabel!
@IBOutlet weak var favImage: UIImageView!
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return getFav.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "favouriteCell", for: indexPath) as! FavouriteTableViewCell
let favs = getFav[indexPath.row]
cell.name.text = favs.name
cell.price.text = favs.price
cell.favImage.image = favs.image
tableView.reloadData()
return cell
}
override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
}
代码中有两个错误正在导致错误。
无法分配类型为“FAV?”的值 当您试图将
类型。Fav?
类型的对象分配给[Fav]
时,会导致“[Fav]”
实例成员“Get Fav”不能用于类型“FavouriteTableVc”; 您是否打算使用此类型的值?
是因为您试图分配变量而不创建对象而导致的。
替换为具有以下代码的FavTapp(favNext:FavouriteTableVC)
方法。 希望这能解决你的问题。
func favTapped(favNext: FavouriteTableVC) {
if let tempFav = Fav(image: divanPhoto.image, name: divanNameLabel.text!, price: priceLabel.text!){
favNext.getFav = tempFav
fav = tempFav
}
}