Adding rows to a swift array of my Schedule from a Detail View Controller won't work -


i have list of events each of them pass in data detail vc object core data model. example, event can have title, date, room, isfavorite, etc. now, detailvc, have "add schedule" button let user select favorite event attend. once clicked, save object array.

i error1:

cannot invoke append argument list of type string.

detail view controller:

class detailviewcontroller: uiviewcontroller, uitableviewdatasource, uitableviewdelegate {      var managedobjectcontext: nsmanagedobjectcontext? = nil      //    @iboutlet weak var detaildescriptionlabel: uilabel!      @iboutlet weak var tableview: uitableview!      //create new array hold on favorite objects (sessions add schedule)     var favesarray = [event]()      var detailitem: event! 

this detail view controller cellforrowatindexpath:

func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell {      if indexpath.section == sections.info && indexpath.row == 1 {         let cell: titlecell = tableview.dequeuereusablecellwithidentifier("favecell", forindexpath: indexpath) as! titlecell          if detailitem.isfavorite.boolvalue {             cell.valuefavebutton.settitle("remove schedule", forstate: .normal)         } else {             cell.valuefavebutton.settitle("add schedule", forstate: .normal)         }          cell.valuefavebutton.addtarget(self, action: "myschedulebutton:", forcontrolevents: .touchupinside)          return cell      } else if indexpath.section == sections.info && indexpath.row == 0 {          let cell: titlecell = tableview.dequeuereusablecellwithidentifier("titlecell", forindexpath: indexpath) as! titlecell          let dateformatter = nsdateformatter()         dateformatter.dateformat = "hh:mm"         var datestring = dateformatter.stringfromdate(detailitem!.date)          cell.titlelabel.text = detailitem?.title         cell.fieldlabel.text = datestring          return cell      } else if indexpath.section == sections.info && indexpath.row == 2 {         let cell: removefavecell = tableview.dequeuereusablecellwithidentifier("removefavecell", forindexpath: indexpath) as! removefavecell          cell.removefavebutton.addtarget(self, action: "removefavoritebutton:", forcontrolevents: .touchupinside)          return cell      } else if indexpath.section == sections.description {          let cell: labelcell = tableview.dequeuereusablecellwithidentifier("labelcell", forindexpath: indexpath) as! labelcell          cell.labeldescriptionfield.text = "swift new language apple."          return cell     } else {          assertionfailure("unhandled session table view section")         let cell = tableview.dequeuereusablecellwithidentifier("reuseidentifier", forindexpath: indexpath) as! uitableviewcell          return cell     } }      func myschedulebutton(sender: uibutton) {         detailitem.isfavorite = !detailitem.isfavorite.boolvalue        tableview.reloadsections(nsindexset(index: sections.info), withrowanimation: .automatic)          //now add clicked/save object(event row) on faves array           //1 yellow warning in next line:conditional cast event  event succeeds. compiles fine.         if let favesession:event = detailitem as? event {              self.favesarray.append(favesession)         }       } 

can't figure out yet. valid approach work core data object saved later new arrays? in case, shown when segment button called schedule pressed. thank answers.

event.swift

class event: nsmanagedobject {        @nsmanaged var date: nsdate      @nsmanaged var isfavorite: nsnumber      @nsmanaged var timestamp: nsdate      @nsmanaged var title: string      @nsmanaged var classselected: string      @nsmanaged var desc: string        }

display schedule (favesarray objects selected in detailvc)

@ibaction func filterhsclassesbyperiod(sender: uisegmentedcontrol) {          let classselected: string?                    if sender.selectedsegmentindex == 0 {              classselected = "period 1"          }else {              classselected = "my schedule"          }                          let filterpredicate = nspredicate(format: "classselected = %@", classselected!)          var request: nsfetchrequest = self.fetchedresultscontroller.fetchrequest                    request.predicate = filterpredicate                          var e: nserror? = nil                    self.fetchedresultscontroller.performfetch(&e)                           self.tableview.reloaddata()                }

you define favesarray array of event:

var favesarray = [event]() 

but trying append string

if let favesession:string = detailitem.title as? string {   self.favesarray.append(favesession)  } 

if want able append event , string need change declaration be:

var favesarray = [anyobject]() 

or (if possible) cast favesession event instead string, can decide if possible

if let favesession:event = detailitem.title as? event {   self.favesarray.append(favesession)  } 

Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -