ios - 无法将类型 '[String]' 的值转换为预期的参数类型 'String' : while appending arrays to get data from Fireabse in table view cell

标签 ios arrays swift xcode firebase

在快照中追加数组时出错。我想从快照中的这些数组 EngNamesUrNamescakeImages 中检索所有值,以便这些值可以显示在表格 View 单元格上。 但是我可以从 Firebse 检索 Cake Rate LabelEng Name Label 的所有值,但我只想检索所有 cakeRatelabel 来自 firebase 的 rate 值和 EngNamesUrNamescakeImages 我想要的数据的其余部分分别从 Assets 中定义的数组和图像中检索本地。 帮助我完成这项工作,我们将不胜感激。

Firebase 结构
enter image description here

View Controller

enter image description here


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

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

关于ios - 无法将类型 '[String]' 的值转换为预期的参数类型 'String' : while appending arrays to get data from Fireabse in table view cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42733225/

相关文章:

ios - iPad 上的 iOS 版 Chrome 用户代理

ios - Swift 和 Socket.io : Event doesn't run anymore when re-open a controller

ios - Xcode 6.1 if/else/for/switch 语句不自动完成(仅限 Swift)

objective-c - 将 Stephen Poletto SPUserResizableView [ Objective-C ] 翻译成 Swift 3.0

ios - 导航到特定的 TabBar 项

ios - 带有 AVAudioPlayer 的 iOS 中的 Swift : Singleton not working the way I hoped it would

ios - 为什么弱强舞会保持循环?

java - 如何将对象的一个​​元素转换为实例数组?

java - 在Java中如何对带有整数的字符串进行排序?

java - 引用和使用另一个类的数组