hi trying load table particular day data save core data. want data loaded each save being section. there many different measurements save core data. not getting far. can help?
var totalentries: int = 0 var isperformingsegue = false var totaldates: int = 0 var results: nsarray! = nsarray() var appdel: appdelegate! var context: nsmanagedobjectcontext! var request : nsfetchrequest! override func viewdidload() { super.viewdidload() appdel = (uiapplication.sharedapplication().delegate as! appdelegate) context = appdel.managedobjectcontext loadtable() } func loadtable() { let today = nsdate() // current calendar let calendar = nscalendar.currentcalendar() // start of day of selected date let startdate = calendar.startofdayfordate(today) // start of day after selected date let enddate = calendar.datebyaddingunit(.day, value: 1, todate: startdate, options: nscalendaroptions())! request.returnsobjectsasfaults = false let dateformatter = nsdateformatter() dateformatter.dateformat = "yyyy-mm-dd hh:mm" dateformatter.timezone = nstimezone(name: "gmt") // line resolved me issue of getting 1 day less selected date totalentries = context.countforfetchrequest(request, error: nil) int! request.predicate = nspredicate(format: "(date >= %@) , (date <= %@)", startdate, enddate) request.sortdescriptors = [nssortdescriptor(key: "report_id", ascending: false)] { var results : nsarray = try context.executefetchrequest(request) } catch { // report error got. } } // mark: - table view data source override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { return results.count } override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell{ let cell: resulttableviewcell = tableview.dequeuereusablecellwithidentifier("resultcell") as! resulttableviewcell //get contents , put cell let ourdata = results[indexpath.row] as! nsmanagedobject if indexpath.row == 0 { let colourlevel: int = ((ourdata.valueforkey("colourlevel"))?.integervalue)! cell.resultlabel.textcolor = uicolor.whitecolor() cell.resultlabel.text = "colour of bowel movement" cell.backgroundcolor = globalcolourconstants.colourcolourarray[(colourlevel - 1)] return cell } else if indexpath.row == 1 { let bmlevel: int = ((ourdata.valueforkey("bmlevel"))?.integervalue)! cell.resultlabel.text = globalphrazesconstants.globalphrazesstrings.bmphrazearray[bmlevel] cell.resultlabel.textcolor = uicolor.whitecolor() let imagename = globaluiimageconstants.bmimagearray[bmlevel] let image = uiimage(named: imagename) cell.resulticonimageview.image = image cell.backgroundcolor = globalcolourconstants.bmcolourarray[bmlevel] return cell } else { return cell } }
i have undated method below , have got closer. can sort days data , sort in sections time. can't more 1 row show (there should more 1 row).
let managedobjectcontext = (uiapplication.sharedapplication().delegate as! appdelegate).managedobjectcontext var fetchedresultcontroller: nsfetchedresultscontroller = nsfetchedresultscontroller() override func viewdidload() { super.viewdidload() // core data fetchedresultcontroller = getfetchedresultcontroller() fetchedresultcontroller.delegate = self { try fetchedresultcontroller.performfetch() } catch _ { } } // mark:- retrieve tasks func getfetchedresultcontroller() -> nsfetchedresultscontroller { fetchedresultcontroller = nsfetchedresultscontroller(fetchrequest: taskfetchrequest(), managedobjectcontext: managedobjectcontext, sectionnamekeypath: "savedtimehourminute", cachename: nil) return fetchedresultcontroller } func taskfetchrequest() -> nsfetchrequest { let fetchrequest = nsfetchrequest(entityname: "userdata") let sortdescriptor = nssortdescriptor(key: "savedtimemonthday", ascending: true) fetchrequest.sortdescriptors = [sortdescriptor] return fetchrequest } func numberofsectionsintableview(tableview: uitableview) -> int { if let sections = fetchedresultcontroller.sections { return sections.count } return 0 } func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { if let sections = fetchedresultcontroller.sections { let currentsection = sections[section] return currentsection.numberofobjects } return 0 }
for understand want sort entries based on date created/saved, way add time stamp attribute entity , populate attribute when saving object. then, use sortdescriptor sort records fetch based on timestamp attribute. along lines of:
let sortdescriptor = nssortdescriptor(key: "savedtimestamp", ascending: true) let fetchrequest = nsfetchrequest(entityname: "myrecord") fetchrequest.sortdescriptors = [sortdescriptor] //- fetch records var savedrecords: [myrecord]? { savedrecords = managedobjectcontext.executefetchrequest(fetchrequest) as? [myrecord] } catch { print("the calamity!") }
hope helps.
Comments
Post a Comment