无法将types''的值转换为期望的参数types'String':在表视图单元格中添加数组以从Fireabse获取数据时

在快照中追加arrays时出错。 我想要从快照中的这些数组EngNamesUrNamescakeImages中检索所有值,以便值可以出现在表格视图单元格中。 不过,我可以从Firebse检索Cake Rate LabelEng Name Label所有值,但是我想要从Firebse和剩余的EngNamesUrNamescakeImages检索所有的cakeRatelabel值,我想从已定义的数组中检索cakeImages图像资产分别。 帮助我做到这一点,任何帮助将不胜感激。

Firebase结构
在这里输入图像说明

视图控制器

在这里输入图像说明

TestTabelViewController

  import UIKit import Firebase class TestTableViewController: UITableViewController { @IBOutlet var cakeTableView: UITableView! var ref = FIRDatabase.database().reference() struct Cake { let cakeEngNames: String let cakeUrNames: String let cakeImages: UIImage var cakeRates: String } var cakes = [Cake]() var cakeImages = [UIImage(named : "bakery_almond_cake")!,UIImage(named : "bakery_azna_mental_cake")!, UIImage(named : "bakery_black_forest_cake")!, UIImage(named : "bakery_checker_cake")!, UIImage(named : "bakery_cheese_cake")!, UIImage(named : "bakery_chocolate_cake")!, UIImage(named : "bakery_coconut_macaroni_cake")!, UIImage(named : "bakery_cream_cake")!, UIImage(named : "bakery_cream_layer_cake")!, UIImage(named : "bakery_fruit_cake")!, UIImage(named : "bakery_lemon_layer_cake")!, UIImage(named : "bakery_pineapple_cake")!, UIImage(named : "bakery_plain_cake")!,UIImage(named : "bakery_pulm_cake_almond")!,UIImage(named : "bakery_rich_plum_cake")!,UIImage(named : "bakery_swiss_cake")!] var EngNames = ["Almond Cake", "Azna cake", "Black forest Cake","checker cake", "cheese cake", "chocolate cake","coconut cake", "cream cake", "cream layer cake", "fruit cake", "lemon cake", "pine apple cake", "plain cake", "plum cake", "rich cake", "swiss cake"] var UrNames = ["Almond Badam cake", "Azna wala cake", "Black kala forest Cake","checker wala cake", "cheese wala cake", "chocolate wala cake","coconut wala cake", "cream wala cake", "cream wala layer cake", "fruit wala cake", "lemon wala cake", "pine apple wala cake", "plain wala cake", "plum wala cake", "rich wala cake", "swiss wala cake"] override func viewDidLoad() { super.viewDidLoad() let almondSnap = ref.child("Hyderabad").child("Bakery").child("Cake") almondSnap.observe( .value, with: { (snapshot) in if snapshot.hasChildren(){ for snap in snapshot.children { if let node = snap as? FIRDataSnapshot , let rate = node.value as? Int { self.cakes.append(Cake(cakeEngNames: EngNames, cakeUrNames: UrNames, cakeImages: cakeImages, cakeRates: String(rate))) } } self.cakeTableView.reloadData() } }) } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.cakes.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCell(withIdentifier: "TestTableViewCell", for: indexPath) as! TestTableViewCell cell.cakeImage.image = self.cakes[indexPath.row].cakeImages cell.cakeEngLabs.text = self.cakes[indexPath.row].cakeEngNames cell.cakeUrLabs.text = self.cakes[indexPath.row].cakeUrNames cell.cakeRateLabs.text = self.cakes[indexPath.row].cakeRates return cell } } 

你在Cake结构的初始化程序中将数组传递给String参数。 尝试类似

 for (i, snap) in snapshot.children.enumerated() { if let node = snap as? FIRDataSnapshot , let rate = node.value as? Int { self.cakes.append(Cake(cakeEngNames: EngNames[i], cakeUrNames: UrNames[i], cakeImages: cakeImages[i], cakeRates: String(rate))) } } 

假设您在顶部定义的三个数组应该映射到不同的蛋糕的各种参数。 这里你从每个数组中取出相关的条目,而不是传递整个数组。