在这里遇到firebase的问题我无法弄清楚。尝试从Firebase获取数据并将其加载到UITableView中,但似乎在将数据从firebase转换为数组时遇到问题。收到以下错误消息:
' NSUnknownKeyException',原因:' [setValue:forUndefinedKey:]:此类与密钥-KyP-yzMcrvb7Z-PdAp0不符合密钥值编码。'
现在我可以打印出来自' dic'这里显示: [" -KyP-yzMcrvb7Z-PdAp0":asdasd," -KyP-wrMpuHqLQIMSgXI":dsad]。这是FB登录用户进入firebase的价值所以我认为它有转换问题吗?
这是我的模型类: 导入UIKit
class Rentals:NSObject {
var title: String?
var rentalType: String?
var dateAval: String?
var location: String?
var price: String?
var bond: String?
var pets: String?
var descripton: String?
}
这是我的TableViewVC代码,用于从Firebase获取数据并将其放入数组中:
class TableViewVC:UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet weak var myTableView: UITableView!
var rentalsArr = [Rentals]()
var databaseRef:DatabaseReference?
var handle: UInt!
override func viewDidLoad() {
super.viewDidLoad()
databaseRef = Database.database().reference()
fetchRentalData()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
cell.textLabel?.text = rentalsArr[indexPath.row].title
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return rentalsArr.count
}
func fetchRentalData(){
handle = databaseRef?.child("Rentals").observe(.childAdded, with: { (snap) in
if let dic = snap.value as? [String: AnyObject] {
print("******\(dic)")
let rentals = Rentals()
rentals.setValuesForKeys(dic)
self.rentalsArr.append(rentals)
DispatchQueue.main.async {
self.myTableView.reloadData()
}
}
})
}
}
我花了很多时间试图实现这一目标,所以任何帮助都会非常感激!
谢谢