非常感谢任何帮助
Swift 4.0 Xcode9
我想获得作业描述的标题,并用它填充我的tableView。我已经尝试了很多方法,但我不能让它工作,因为"孩子"在我的代码中没有成员。我可以打印但是就是这样。
当我将数据打印到控制台时,它看起来像附加的图像。所以我得到了数据。
我的代码如下所示:
{
@IBOutlet weak var jobPostsTableView: UITableView!
//Set the Firebase Reference
var ref = Database.database().reference()
var searchJSONQuery : String = ""
var jobsData = [String]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return jobsData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell")
cell?.textLabel?.text = jobsData[indexPath.row]
return cell!
}
func retrieveJobTitles() {
let positionRef = ref.child("positions")
positionRef.observeSingleEvent(of: .value, with: { (snapshot) in
// Iterate through all of your positions
for child in snapshot.children {
let positionsInfo = child.value as! [String: Any]
let jobTitle = positionsInfo["title"] as! String
if jobTitle != nil {
self.jobsData.append(jobTitle)
}
}
self.jobPostsTableView.reloadData()
})
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
jobPostsTableView.delegate = self
jobPostsTableView.dataSource = self
retrieveJobTitles()
}
}
child.value给出错误:
Value of type 'Any' has no member 'value'
答案 0 :(得分:0)
您的数据库JSON结构应与此类似
我要做的第一件事就是创建一个NSObject类,它基本上可以保存我数据库中的所有值。在此示例中,我想解析string "C"
,date
和message
name
在TableViewController类中,创建一个NSObject类的实例,然后创建一个从firebase检索数据的函数。
class MyObjects: NSObject {
var date: AnyObject!
var message: AnyObject!
var name: AnyObject!
}
var myObject = [MyObject]()
要使用它,只需 func retrieveData() {
Database.datanase().reference().child("todo").observe(.childAdded, with: { (snapshot) in
let dict = snapshot.value as! [String : AnyObject]
let object = MyObject()
object.setValuesForKeys(dict)
self.myObject(object)
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
})
}
,myObject.date
,myObject.name