我将UIImages数据路径保存到NSUserDefaults中的数组,但只是第一次启动应用程序
func saveImages() ->Bool{
if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
//App already launched
return true
}
else{
defaults.setBool(true, forKey: "isAppAlreadyLaunchedOnce")
//App launched first time
var images = [UIImage(named: "apple"), UIImage(named: "banana")]
var dataVoid = [UIImagePNGRepresentation(images[0]),UIImagePNGRepresentation(images[1])]
var imagesDatas = [dataVoid[0],dataVoid[1]]
var documentsDirectory:String?
var paths:[AnyObject] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
if paths.count > 0 {
documentsDirectory = paths[0] as? String
var savePaths = [documentsDirectory! + "/apple", documentsDirectory! + "banana"]
for index in savePaths{
for secondIndex in imagesDatas {
NSFileManager.defaultManager().createFileAtPath(index, contents: secondIndex, attributes: nil)
}
}
NSUserDefaults.standardUserDefaults().setObject(savePaths, forKey: "NSSavePaths")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
return false
}
然后我从NSUserdefaults调用数组并将其存储在viewDidLoad中的变量中
var arraySavePaths:NSArray = []
override func viewDidLoad() {
super.viewDidLoad()
saveImages()
arraySavePaths = NSUserDefaults.standardUserDefaults().objectForKey("NSSavePaths") as! NSArray
table.reloadData()
}
在cellForRowAtIndexPath中,我将uiimages分配给每个单元格
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
cell.imageView?.image = UIImage(named: arraySavePaths[indexPath.row] as! String)
return cell
}
这是第一次启动应用时的工作原理
问题是,第二次启动应用时(saveImages()
没有被调用),它没有显示任何内容,我可以做错什么?
答案 0 :(得分:0)
我猜'图像路径'导致了这个问题。
文件URL和文件路径不同。
保存文件URL并使用UIImage(initWithContentURL)或 保存文件路径并使用UIImage(initWithContentPath)
并检查文件是否保存成功?