gpt4 book ai didi

ios - 如何在 swift 中使用 NSUserDefaults 保存字符串数组

转载 作者:搜寻专家 更新时间:2023-11-01 06:44:49 24 4
gpt4 key购买 nike

我正在尝试使用 NSUserDefaults 和 swift 保存一个字符串数组。我四处搜索并相信我必须使用 [NSString] 而不是 [String] 但是该应用程序仍然因错误而崩溃

fatal error: unexpectedly found nil while unwrapping an Optional value

我看不出我做错了什么,因为它在保存整数和字符串时工作得很好。这是我的数据单例和 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()
}
}
}

最佳答案

        <!-- language: swift -->

//declare and initiate the array
var sample_array : NSMutableArray! = []
//use mutable array to add data

//variable to store value in array
var say: String! = "Hello"

//add values in array
sample_array.addObject("hello")
//or
//sample_array.addObject(say)

/*
//you can also save values in array like this
var sample_array: Array<String> = []
var say: String! = "Hello"
sample_array = ["Qwerty"]
sample_array.insert(say, atIndex: 1)
println(sample_array)
*/

//archive and saving data
let data = NSKeyedArchiver.archivedDataWithRootObject(sample_array)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "array_key")
NSUserDefaults.standardUserDefaults().synchronize()

//unarchive and getting data
if let data = NSUserDefaults.standardUserDefaults().objectForKey("array_key") as? NSData {
stopover_array = NSKeyedUnarchiver.unarchiveObjectWithData(data) as NSMutableArray
}

关于ios - 如何在 swift 中使用 NSUserDefaults 保存字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com