【发布时间】:2015-08-09 16:56:04
【问题描述】:
我将 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())它没有显示任何内容,我做错了什么?
【问题讨论】:
-
您是否尝试过将 viewDidLoad 的内容移动到 viewWillAppear 中?
标签: ios swift uitableview uiimage nsuserdefaults