我刚尝试在iPhone上安装了当前在应用商店中安装的版本的应用程序的更新版本。自上次更新以来,我添加了一些新功能,这似乎会导致应用程序崩溃。
基本上,我添加了一个新数组,用于存储以前版本中不存在的笔记数据,这些数据存储在NSUserDefaults中(不太理想,我知道,但我现在宁愿保持这种方式)
这是我在表格视图中的应用程序崩溃的代码:
cell.notesLabel.text = (notes.objectAtIndex(indexPath.row)) as? String
错误只是说明了 - "线程1:断点1.1"只要点击表格视图选项卡。
我正在与其他人讨论这个问题,他们建议我需要检查默认值中是否存在数组,如果缺少则创建并同步它。
我只编程了几个月,所以这对我来说并不意味着很多。但我想我只需要做这样的事情:
if NSUserDefaults.standardUserDefaults().arrayForKey("notes") == nil {
//Do something?
}
我不确定他的同步意味着什么?有人有什么建议吗?
目前在viewWillAppear()
我有这段代码:
if var tempNames: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("names") {
names = tempNames.mutableCopy() as NSMutableArray
}
if var tempDates: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("dates") {
dates = tempDates.mutableCopy() as NSMutableArray
}
if var tempValues: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("values") {
values = tempValues.mutableCopy() as NSMutableArray
}
if var tempImages: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("images") {
images = tempImages.mutableCopy() as NSMutableArray
}
if var tempUnformatted: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("unformatted") {
unformatted = tempUnformatted.mutableCopy() as NSMutableArray
}
if var tempNotes: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("notes") {
notes = tempNotes.mutableCopy() as NSMutableArray
}
编辑:
我尝试将代码更改为此,但我遇到了同样的问题:
if NSUserDefaults.standardUserDefaults().arrayForKey("notes") != nil {
var tempNotes: NSArray = NSUserDefaults.standardUserDefaults().arrayForKey("notes")!
notes = tempNotes.mutableCopy() as NSMutableArray
}
答案 0 :(得分:1)
这是一个让你入门的片段。我把它检查到了操场上并且有效:
var defaults = NSUserDefaults.standardUserDefaults()
var array = ["Eggs", "Milk", "Bread"]
defaults.setObject(array, forKey: "notes")
var notes = [String]()
if NSUserDefaults.standardUserDefaults().arrayForKey("notes") != nil {
notes = defaults.objectForKey("notes") as Array
}
您可以在测试时同步,但我怀疑您是否需要它用于发布版本:
NSUserDefaults.standardUserDefaults().synchronize();