我在这里不知所措,我需要能够检查NSUserDefaults是否返回nil,如果确实如此,请给它一个默认值。如果它不是我需要能够从NSUserDefaults加载最新的阵列,但我的应用程序继续崩溃,我不知道为什么。
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_INSTRUCTION错误
感谢。
答案 0 :(得分:0)
== nil
。UIImage
保存到NSUserDefaults
。我认为你可能也喜欢对它更加迅速。
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()
}
答案 1 :(得分:0)
Swift更关心打字那个objc。您正在转换为Array。尝试这样做。我猜你想要arrayOfImages是一个UIImage数组。
if let arrayOfImages = NSUserDefaults.standardUserDefaults().arrayForKey("imageDataArray") as? [UIImage] {
答案 2 :(得分:0)
NSUserDefaults不接受直接插入UIIMage。在插入NSUserDefaults之前,您应该转换为NSData:
let imageData = UIImagePNGRepresentation(image)
转换回图片:
var retrievedImage = UIImage(data: imageData) //return optional object