类型“任何”已经在Xcode 8.1没有下成员斯威夫特3
问题描述:
我下面This Tutorial 和我面临的问题类型“任何”有没有下会员当我定义的ViewController.Swiftm我的标题和消息在等待你的一种建议
类型“任何”已经在Xcode 8.1没有下成员斯威夫特3
import UIKit
import Firebase
import FirebaseDatabase
struct postStruct {
let title : String
let message : String
}
class TableViewController: UITableViewController {
let posts = [postStruct]()
override func viewDidLoad() {
super.viewDidLoad()
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("posts").queryOrderedByKey().observe(.childAdded, with: { (snapshot) in
let title = snapshot.value!["title"] as! String
let message = snapshot.value!["message"] as! String
self.posts.insert(contentsOf: postStruct(title: title , message: message), at: index, 0)
self.tableView.reloadData()
})
post()
}
func post() {
let title = "Title"
let message = "Message"
let post:[String:AnyObject] = ["title":title as AnyObject,"message":message as AnyObject]
let databaseRef = FIRDatabase.database().reference()
databaseRef.child("posts").childByAutoId().setValue(post)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")
let label1 = cell?.viewWithTag(1) as! UILabel
label1.text = posts[indexPath.row].title
let label2 = cell?.viewWithTag(2) as! UILabel
label2.text = posts[indexPath.row].message
}
}
答
您需要首先投下snapshot.value as? [String: AnyObject]
,因为编译器不知道什么类型的snapshot.value是。
像这样:
if let value = snapshot.value as? [String: AnyObject] {
let title = value["title"] as! String
let message = value["message"] as! String
self.posts.insert(contentsOf: postStruct(title: title, message: message), at: index, 0)
self.tableView.reloadData()
}
看起来你错过了几十个类似的问题和他们的答案存在,当你做了研究这个问题的问题... *咳嗽* – Moritz
@EricAya我看了十几个第一。 –
@EricAya他们有些不同。 –