私はこの「EXTRA ARGUMENT」のタイトルを「IN CALL」のすべての週に解決しようとしています。以下は私が問題を抱えているエラーのコードです。 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
NEW CODE "THATを呼び出すために渡される引数は、引数を取りません"
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'が実際にその名前のように構造体である場合、それを' PostStruct'として大文字にする必要があります。それはスウィフトコンベンションなので、それに従うことですべての人にとってより明確なものになります。 'PostStruct'は' title'と 'message'の両方をとる' init'を持っていますか? – Connor
POST構造体は構造体の名前に過ぎません。いいえ、initがありません。 @Connor – LaniMJ
オートコンプリート機能を使用して、postStructを配列に挿入します。それがうまくいかない場合でも、postStruct.initを試してみてください。それは引数を自動完成し、コンパイラと自分自身を満足させるはずです。 –