iphone - Trying to load images from local path fails after restart in iOS -
i storing images on device code (using swift 1.2 / ios 8)
func saveimagelocally(imagedata:nsdata!) -> string{ let time = nsdate().timeintervalsince1970 let filemanager = nsfilemanager.defaultmanager() let dir = nssearchpathfordirectoriesindomains(.documentdirectory, .userdomainmask, true)[0].stringbyappendingpathcomponent(subdirforimage) string if !filemanager.fileexistsatpath(dir) { var error: nserror? if !filemanager.createdirectoryatpath(dir, withintermediatedirectories: true, attributes: nil, error: &error) { println("unable create directory: \(error)") return "" } } let path = dir.stringbyappendingpathcomponent("spot\(int(time)).png") imagedata.writetofile(path, atomically: true) println(uiimage(contentsoffile: path)) return path }
this works good, can see image within println within finder, if observe filesystem of simulator.
after restart app within simulator (or iphone, it's same behavior) try read image this:
func loadimagefromlocalstore(path: string) -> uiimage{ if(!path.isempty){ let image = uiimage(contentsoffile: path) if(image != nil){ return image!; } } return uiimage(named: "noimage.png")! }
but here image can't fetched. it's nil. but: path hasn't changed plus still see image within file system.
got it, problem saved path seems wrong. it's better save image-name.
this save method
func saveimagelocally(imagedata:nsdata!) -> string{ let time = nsdate().timeintervalsince1970 let filemanager = nsfilemanager.defaultmanager() let dir = nssearchpathfordirectoriesindomains(.documentdirectory, .userdomainmask, true)[0].stringbyappendingpathcomponent(subdirforimage) string if !filemanager.fileexistsatpath(dir) { var error: nserror? if !filemanager.createdirectoryatpath(dir, withintermediatedirectories: true, attributes: nil, error: &error) { println("unable create directory: \(error)") return "" } } let pathtosaveimage = dir.stringbyappendingpathcomponent("spot\(int(time)).png") imagedata.writetofile(pathtosaveimage, atomically: true) return "spot\(int(time)).png" }
and read method
func loadimagefromlocalstore(imagename: string) -> uiimage{ let filemanager = nsfilemanager.defaultmanager() let dir = nssearchpathfordirectoriesindomains(.documentdirectory, .userdomainmask, true)[0].stringbyappendingpathcomponent(subdirforimage) string let path = dir.stringbyappendingpathcomponent(imagename) if(!path.isempty){ let image = uiimage(contentsoffile: path) println(image); if(image != nil){ return image!; } } return uiimage(named: "noimage.png")! }
best christian
Comments
Post a Comment