ios - CoreData not saving -
this code:
import uikit import coredata class photolist: uiviewcontroller, uitableviewdelegate, uitableviewdatasource, nsfetchedresultscontrollerdelegate { override func viewdidload() { super.viewdidload() fetchedresultscontroller = nsfetchedresultscontroller(fetchrequest: fetchrequest(), managedobjectcontext: moc!, sectionnamekeypath: nil, cachename: nil) fetchedresultscontroller?.delegate = self fetchedresultscontroller?.performfetch(nil) tableview.reloaddata() } override func didreceivememorywarning() { super.didreceivememorywarning() } @iboutlet var tableview: uitableview! var whotookarray: [string] = [] var imagearray: [uiimage] = [] let moc:nsmanagedobjectcontext? = (uiapplication.sharedapplication().delegate as! appdelegate).managedobjectcontext var fetchedresultscontroller: nsfetchedresultscontroller? var whotookname: string = "" func fetchrequest() -> nsfetchrequest { var request = nsfetchrequest(entityname:"photolistentity") let sortdescriptor = nssortdescriptor(key: "whotook", ascending: true) request.predicate = nil request.sortdescriptors = [sortdescriptor] request.fetchbatchsize = 20 return request } func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { return fetchedresultscontroller?.sections?[section].numberofobjects ?? 0 } func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier("cell", forindexpath: indexpath) as! uitableviewcell if let let whotookname = fetchedresultscontroller?.objectatindexpath(indexpath) as? photolistentity { cell.textlabel?.text = whotookname.whotook } return cell } //nsfetchedresultscontroller delegate functions func controller(controller: nsfetchedresultscontroller, didchangesection sectioninfo: nsfetchedresultssectioninfo, atindex sectionindex: int, forchangetype type:nsfetchedresultschangetype) { switch type { case nsfetchedresultschangetype.insert: tableview.insertsections(nsindexset(index: sectionindex), withrowanimation: uitableviewrowanimation.fade) break case nsfetchedresultschangetype.delete: tableview.deletesections(nsindexset(index: sectionindex), withrowanimation: uitableviewrowanimation.fade) break case nsfetchedresultschangetype.move: break case nsfetchedresultschangetype.update: break default: break } } func tableview(tableview: uitableview, commiteditingstyle editingstyle: uitableviewcelleditingstyle, forrowatindexpath indexpath: nsindexpath) { if editingstyle == .delete { } switch editingstyle { case .delete: moc?.deleteobject(fetchedresultscontroller?.objectatindexpath(indexpath) as! photolistentity) case .insert: break case .none: break } } func controller(controller: nsfetchedresultscontroller, didchangeobject anobject: anyobject, atindexpath indexpath: nsindexpath?, forchangetype type: nsfetchedresultschangetype, newindexpath: nsindexpath?) { switch type { case nsfetchedresultschangetype.insert: tableview.insertrowsatindexpaths(nsarray(object: newindexpath!) [anyobject], withrowanimation: uitableviewrowanimation.fade) break case nsfetchedresultschangetype.delete: tableview.deleterowsatindexpaths(nsarray(object: newindexpath!) [anyobject], withrowanimation: .fade) break case nsfetchedresultschangetype.move: tableview.deleterowsatindexpaths(nsarray(object: newindexpath!) [anyobject], withrowanimation: .fade) break case nsfetchedresultschangetype.update: tableview.cellforrowatindexpath(indexpath!) break default: break } } func controllerwillchangecontent(controller: nsfetchedresultscontroller) { tableview.beginupdates() } func controllerdidchangecontent(controller: nsfetchedresultscontroller) { tableview.endupdates() } }
and
import uikit import coredata protocol senddetailsdelegate { func senddetails(name: string) } class details: uiviewcontroller, uiimagepickercontrollerdelegate, uinavigationcontrollerdelegate, uitableviewdelegate, nsfetchedresultscontrollerdelegate { override func viewdidload() { super.viewdidload() let tapgesturerecognizer: uitapgesturerecognizer = uitapgesturerecognizer(target: self, action: "chooseimage:") tapgesturerecognizer.numberoftapsrequired = 1 imageselected.addgesturerecognizer(tapgesturerecognizer) imageselected.userinteractionenabled = true } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } @iboutlet var whotooktextfield: uitextfield! @iboutlet var imageselected: uiimageview! let moc: nsmanagedobjectcontext = (uiapplication.sharedapplication().delegate as! appdelegate).managedobjectcontext! //pick image tapping, accessing photolibrary func chooseimage(recognizer: uitapgesturerecognizer) { let imagepicker: uiimagepickercontroller = uiimagepickercontroller() imagepicker.delegate = self imagepicker.sourcetype = uiimagepickercontrollersourcetype.photolibrary self.presentviewcontroller(imagepicker, animated: true, completion: nil) } //put selected image screen func imagepickercontroller(picker: uiimagepickercontroller, didfinishpickingmediawithinfo info: [nsobject : anyobject]) { let pickedimage: uiimage = (info nsdictionary).objectforkey(uiimagepickercontrolleroriginalimage) as! uiimage let smallpicture = scaleimagewith(pickedimage, newsize: cgsizemake(288,148)) var sizeofimageview: cgrect = imageselected.frame sizeofimageview.size = smallpicture.size imageselected.frame = sizeofimageview imageselected.image = smallpicture picker.dismissviewcontrolleranimated(true, completion: nil) } func imagepickercontrollerdidcancel(picker: uiimagepickercontroller) { picker.dismissviewcontrolleranimated(true, completion: nil) } func scaleimagewith(image: uiimage, newsize: cgsize) -> uiimage { uigraphicsbeginimagecontextwithoptions(newsize, false, 0.0) image.drawinrect(cgrectmake(0,0, newsize.width, newsize.height)) let newimage: uiimage = uigraphicsgetimagefromcurrentimagecontext() uigraphicsendimagecontext() return newimage } @ibaction func addbutton(sender: anyobject) { if whotooktextfield == nil || imageselected == nil { return } if imageselected == nil { return } let entitydescription = nsentitydescription.entityforname("photolistentity", inmanagedobjectcontext: moc) let name = nsmanagedobject(entity: entitydescription!, insertintomanagedobjectcontext: moc) name.setvalue(whotooktextfield.text, forkey: "whotook") if let navigation = self.navigationcontroller { navigation.popviewcontrolleranimated(true) } } } , coredata model: import foundation import coredata @objc(photolistentity) class photolistentity: nsmanagedobject { @nsmanaged var whotook: string @nsmanaged var relationship: photolistentity }
i'm new on this, i'm sorry anything. wish know why not being saved when close , open app again. thanks!!!!
answer posted! ideas! :d
add function:
func save() { var appdel: appdelegate = (uiapplication.sharedapplication().delegate as! appdelegate) var moc: nsmanagedobjectcontext = appdel.managedobjectcontext! var whotook: anyobject! = nsentitydescription.insertnewobjectforentityforname("photolistentity", inmanagedobjectcontext: moc) var error: nserror? moc.save(nil) }
and call in addbutton! done! :d
Comments
Post a Comment