【发布时间】:2015-07-23 04:51:40
【问题描述】:
我正在尝试使用 NSUserDefaults 快速保存一个字符串数组。我四处搜索并相信我必须使用 [NSString] 而不是 [String] 但是应用程序仍然崩溃并出现错误
致命错误:在展开可选值时意外发现 nil
我看不出我做错了什么,因为它可以很好地保存整数和字符串。这是我的数据单例和 NSUserDefaults 的代码。
struct DefaultsKeys
{
static let myString = "myString"
static let myInt = "myInt"
static let myArray = "myArray"
}
class DataContainerSingleton
{
static let sharedDataContainer = DataContainerSingleton()
var myString: String?
var myInt: Int?
var myArray:[NSString]?
/* I have also tried:
var myArray:[NSString] = [NSString]() */
var goToBackgroundObserver: AnyObject?
init()
{
let defaults = NSUserDefaults.standardUserDefaults()
myString = defaults.objectForKey(DefaultsKeys.myString) as! String?
myInt = defaults.objectForKey(DefaultsKeys.myInt) as! Int?
myArray = defaults.objectForKey(DefaultsKeys.myArray) as! [NSString]?
goToBackgroundObserver = NSNotificationCenter.defaultCenter().addObserverForName(
UIApplicationDidEnterBackgroundNotification,
object: nil,
queue: nil)
{
(note: NSNotification!) -> Void in
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject( self.myString, forKey: DefaultsKeys.my)
defaults.setObject( self.myInt, forKey: DefaultsKeys.myInt)
defaults.setObject( self.myArray, forKey: DefaultsKeys.myArray)
defaults.synchronize()
}
}
}
【问题讨论】:
-
错误出现在哪一行?
-
好的。所以我认为问题不在于 NSUserDefaults 的实现,而在于访问应用程序中其他地方的值。如果我可以初始化数据容器中的数组而不是使其成为可选的,那将使我的生活变得更加轻松。有没有办法让这个工作?
标签: ios swift nsstring nsuserdefaults swift-array