Ios 试图获取NSUserDefaults密钥时,发生崩溃
我在这里不知所措,我需要能够检查NSUserDefaults是否返回nil,如果返回nil,则给它一个默认值。如果不行,我需要能够从NSUserDefaults加载最新的阵列,但我的应用程序不断崩溃,我不知道为什么Ios 试图获取NSUserDefaults密钥时,发生崩溃,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我在这里不知所措,我需要能够检查NSUserDefaults是否返回nil,如果返回nil,则给它一个默认值。如果不行,我需要能够从NSUserDefaults加载最新的阵列,但我的应用程序不断崩溃,我不知道为什么 if NSUserDefaults.standardUserDefaults().objectForKey("imageDataArray") != nil { arrayOfImages = userDefaults.objectForKey("imageDataA
if NSUserDefaults.standardUserDefaults().objectForKey("imageDataArray") != nil {
arrayOfImages = userDefaults.objectForKey("imageDataArray") as Array
}else {
arrayOfImages = NSUserDefaults.standardUserDefaults().objectForKey("imageDataArray") as Array
var image = UIImage(named: "padlock")!
arrayOfImages.append(image)
NSUserDefaults.standardUserDefaults().setObject(arrayOfImages, forKey: "imageDataArray")
NSUserDefaults.standardUserDefaults().synchronize()
我在运行和第一行时遇到EXC_BAD_指令崩溃
谢谢
您的第一个比较应该是==nil。
我不确定您是否可以将UIImage保存到NSUserDefault。
我想你可能也会更迅速一点
if let arrayOfImages = NSUserDefaults.standardUserDefaults().objectForKey("imageDataArray") {
var image = UIImage(named: "padlock")!
arrayOfImages.append(image)
NSUserDefaults.standardUserDefaults().setObject(arrayOfImages, forKey: "imageDataArray")
NSUserDefaults.standardUserDefaults().synchronize()
} else {
// set your default value:
NSUserDefaults.standardUserDefaults().setObject(Array(), forKey: "imageDataArray")
NSUserDefaults.standardUserDefaults().synchronize()
}
斯威夫特更关心键入那个objc。你正在向阵列施法。试着这样做。我猜你希望arrayOfImages是UIImage的数组
if let arrayOfImages = NSUserDefaults.standardUserDefaults().arrayForKey("imageDataArray") as? [UIImage] {
NSUserDefaults不接受直接插入UIIMage。在插入NSUserDefault之前,应先转换为NSData:
let imageData = UIImagePNGRepresentation(image)
要转换回图像,请执行以下操作:
var retrievedImage = UIImage(data: imageData) //return optional object
顺便说一下,这就是注册用户默认值的用途。未写入磁盘且仅在未提供实际值时提供的值。与Objective-C不同,您不需要在Swift中同步。第一行中的指令看起来正确。它应该可以正常运行