如何保存NSUserDefaults的使用在迅速字符串数组 [英] How to save an array of strings using NSUserDefaults in swift
本文介绍了如何保存NSUserDefaults的使用在迅速字符串数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想保存使用与NSUserDefaults的迅速的字符串数组。我已搜查四周,相信我不得不使用[的NSString]不是[字符串]然而,应用程序仍然错误崩溃
致命错误:意外地发现零,同时展开一个可选值
块引用>我不明白我在做什么错了,因为这是工作完全正常储蓄整数和字符串。这里是我的code为我的数据单和NSUserDefaults的。
结构DefaultsKeys
{
静态让利的myString =的myString
静态令敏=敏
静态令myArray的=myArray的}类DataContainerSingleton
{
静态令sharedDataContainer = DataContainerSingleton()
VAR的myString:字符串?
VAR敏:诠释?
VAR myArray的:[的NSString]/ *我也尝试:
变种myArray的:[的NSString] = [的NSString]()* / VAR goToBackgroundObserver:AnyObject? 在里面()
{
让默认值= NSUserDefaults.standardUserDefaults()
myString的= defaults.objectForKey(DefaultsKeys.myString)作为!串?
敏= defaults.objectForKey(DefaultsKeys.myInt)作为!诠释?
myArray的= defaults.objectForKey(DefaultsKeys.myArray)作为! [的NSString] goToBackgroundObserver = NSNotificationCenter.defaultCenter()。addObserverForName(
UIApplicationDidEnterBackgroundNotification时,
对象:无,
队列:无)
{
(注:NSNotification!) - GT;在无效
让默认值= 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()
}
}
}
解决方案< - 语言:迅速 - > //声明并启动阵列
VAR sample_array:NSMutableArray里! = []
//使用可变数组中添加数据 //变量来存储阵列中的价值
VAR说:串! =你好 //在阵列中添加值
sample_array.addObject(你好)
//要么
//sample_array.addObject(say) / *
//你也可以保存在数组这样的价值观
VAR sample_array:数组<串GT; = []
VAR说:串! =你好
sample_array =QWERTY]
sample_array.insert(比方说,atIndex:1)
的println(sample_array)
* / //归档和保存数据
让数据= NSKeyedArchiver.archivedDataWithRootObject(sample_array)
。NSUserDefaults.standardUserDefaults()的setObject(数据,forKey:array_key)
NSUserDefaults.standardUserDefaults()。同步() //解压缩和获取数据
如果让数据= NSUserDefaults.standardUserDefaults()。objectForKey(array_key)作为? {的NSData
stopover_array = NSKeyedUnarchiver.unarchiveObjectWithData(数据)的NSMutableArray
}I am trying to save an string array using NSUserDefaults with swift. I have searched around and believe that i have to use [NSString] not [String] however the app still crashes with error
fatal error: unexpectedly found nil while unwrapping an Optional value
I can not see what i am doing wrong as it is working perfectly fine saving ints and strings. Here is my code for my data singleton and 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 }
这篇关于如何保存NSUserDefaults的使用在迅速字符串数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文