我一直試圖解決這個「額外的爭論」標題'在通話中'整個星期。以下是我遇到的錯誤代碼。我已經添加了我目前在Xcode中使用的新代碼。我使用此代碼得到的錯誤是:額外的參數在調用?
「參數傳遞給調用不帶任何參數」
新規範
import UIKit
import Firebase
import FirebaseDatabase
struct PostStruct {
struct PostStruct {
let title: String
let message : String
}
}
class DatabaseViewController: UITableViewController {
var posts: [PostStruct] = []
override func viewDidLoad() {
super.viewDidLoad()
//
let databaseRef = Database.database().reference()
databaseRef.child("Posts").queryOrderedByKey().observe(.childAdded, with: {
snapshot in
let snapshotValue = snapshot.value as? NSDictionary
let title = snapshotValue?["title"] as? String
let message = snapshotValue?["message"] as? String
self.posts.insert(PostStruct(title: title ?? "", message: message ?? ""), at: 0) **// <-- ARGUMENT PASSED TO CALL THAT TAKES NO ARGUMENTS**
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 = Database.database().reference()
databaseRef.child("Posts").childByAutoId().setValue(post)
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell")
if cell == nil {
cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
cell?.textLabel?.text = "New value"
cell?.detailTextLabel?.text = "New value"
return cell!
} else {
cell?.textLabel?.text = "" //reset value
cell?.detailTextLabel?.text = "" // resetValue
cell?.textLabel?.text = "New value"
cell?.detailTextLabel?.text = "New value"
return cell!
}
}
}
OLD CODE
import UIKit
import Firebase
import FirebaseDatabase
struct PostStruct {
let title = String!.self
let message : String!
}
class DatabaseViewController: UITableViewController {
var posts = [postStruct]()
override func viewDidLoad() {
super.viewDidLoad()
//
let databaseRef = Database.database().reference()
databaseRef.child("Posts").queryOrderedByKey().observe(.childAdded, with: {
snapshot in
let snapshotValue = snapshot.value as? NSDictionary
let title = snapshotValue?["title"] as? String
let message = snapshotValue?["message"] as? String
self.posts.insert(PostStruct(title: title ,message: message), at: 0) // **<-- EXTRA ARGUMENT 'title' IN CALL**
self.tableView.reloadData()
})
post()
}
func post(){
如果'postStruct'實際上是一個名字所暗示的Struct,那麼您應該將其大寫爲'PostStruct';這是一個Swift慣例,所以遵循它使每個人都更清楚。 'PostStruct'是否有一個'''同時擁有'title'和'message'的init? – Connor
Post結構只是結構的名稱&否它沒有init。 @Connor – LaniMJ
使用自動完成功能將postStruct插入到數組中。如果它不起作用,請嘗試postStruct.init,它應該自動完成參數並滿足編譯器和您自己。 –