无法将类型“[String]”的值转换为预期参数类型“String”:在附加数组以从表视图单元格中的 Fireabse 获取数据时

2023-12-12

在快照中附加数组时出现错误。我想从这些数组中检索所有值EngNames , UrNames and cakeImages在快照中,以便值可以显示在表视图单元格上。 但是我可以检索所有值Cake Rate Label and Eng Name Label from Firebse但我想检索所有cakeRatelabel的值rate来自 firebase 和其余数据EngNames , UrNames and cakeImages我想分别从资产中定义的数组和图像进行本地检索。 帮助我实现这一目标,任何帮助将不胜感激。

Firebase Structure
enter image description here

视图控制器

enter image description here


测试表视图控制器

   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
}
}

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

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)))
    }
}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将类型“[String]”的值转换为预期参数类型“String”:在附加数组以从表视图单元格中的 Fireabse 获取数据时 的相关文章

随机推荐