It's not a duplicate question!! I've searched for many similar questions, but I can't find someone declaring/calling the data model as a class like me.
I want to pass my store
's information from Table View Controller
to Detail View Controller
. I have trouble declaring the right type of variable store
to receive the passed data in my Detail View Controller
.
My Store Model:
class StoreModel{
var name: String?
var desc: String?
var url: String?
var rate: Double
init(name: String?, desc: String?, url: String?, rate: Double){
self.name = name
self.desc = desc
self.url = url
self.rate = rate
}
}
In my Table View Controller
I declared store
to save the data from Firebase:
class TableViewController: UITableViewController, UISearchResultsUpdating {
var storeList = [StoreModel]()
override func viewDidLoad() {
//Hide some codes that initialize Firebase connection ...
refStores.observe(DataEventType.value, with: {(snapshot) in
if snapshot.childrenCount > 0{
for stores in snapshot.children.allObjects as! [DataSnapshot]{
let storeObject = stores.value as? [String: AnyObject]
let storeName = storeObject?["storeName"]
let storeDesc = storeObject?["storeDesc"]
let storeUrl = storeObject?["storeUrl"]
let storeRate = storeObject?["storeRate"]
let store = StoreModel(name: storeName as! String?,
desc: storeDesc as! String?,url: storeUrl as! String?,
rate: storeRate as! Double)
self.storeList.append(store)
}
self.tblSearch.reloadData()
}})}
Below's my attempt:
In my Detail View Controller, I declare storeList
to receive the passed data:
var storeList = [StoreModel]()
I create a segue (with identifier showDetailView
) between my Table View Controller & Detail View Controller.
override func tableView(_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath) {
let selectedStore = storeList[indexPath.row]
let destinationVC = DetailViewController()
destinationVC.storeList = selectedStore
destinationVC.performSegue(withIdentifier: "showDetailView", sender: self)
} }
I got the error message Cannot assign value of type 'StoreModel' to type '[StoreModel]'
, at the line
destinationVC.storeList = selectedStore
, so I think I have problem declaring the right type of variable in my Detail View Controller
.
Thanks for help!