swift - Extra Argument In Call? -
i've been trying resolve "extra argument 'title' in call" week. below code error i'm having trouble with. i've added new code i'm working in xcode. error i'm getting code is:
"argument passed call takes no arguments"
new code
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 call takes no arguments** self.tableview.reloaddata() }) post() } func post(){ let title = "title" let message = "message" let post : [string : anyobject] = ["title" : title anyobject, "message" : message 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) // **<-- argument 'title' in call** self.tableview.reloaddata() }) post() } func post(){
your code has 2 critical flaws:
the definition of poststruct
should this:
struct poststruct { let title: string let message : string }
the line let title = string!.self
declares title
having class object, not string
.
and line databaseviewcontroller
:
var posts = [post]
in code, post
method, believe not want array of methods.
which should this:
var posts: [poststruct] = []
and make 2 fixes above work, need little more:
self.posts.insert(poststruct(title: title ?? "", message: message ?? ""), at: 0)
you may have other faults in code, @ least need fixes above. try them.
Comments
Post a Comment