我想存储一个自定义结构体的数组。
在下面的尝试中,我在saveSampleArrayOfQuerySettings()的第二行得到了运行时错误,抱怨转换为AnyObject。
我想知道是否需要对我的结构体进行编码。我查看了这些帖子,但奇怪的是甚至无法使这些帖子中的样例工作(更不用说将它们应用到我的代码中了)。
请问如何让它正常工作呢?以下是需要查看的帖子:
- How to save an array of objects to NSUserDefault with swift? - (Swift) Storing and retrieving Array to NSUserDefaults - How to save an array of custom structs to plist swift 谢谢。
在下面的尝试中,我在saveSampleArrayOfQuerySettings()的第二行得到了运行时错误,抱怨转换为AnyObject。
struct QuerySettings {
// let ARRAY_INDEX_WHERE_TO_SAVE_STRUCT = 0
let QUERY_SETTINGS_KEY = "querysettings"
let defaults = NSUserDefaults.standardUserDefaults()
private var _includeCompletedReminders: Bool = false // Default value
var includeCompletedReminders: Bool {
get {
// If value has been set before then use it otherwise retrieve it.
return _includeCompletedReminders
} set (newVal) {
_includeCompletedReminders = newVal
// saveSettings(self, index: ARRAY_INDEX_WHERE_TO_SAVE_STRUCT, saveKey: QUERY_SETTINGS_KEY)
}
}
private var _includeRemindersWithNoDueDate: Bool = true
var includeRemindersWithNoDueDate: Bool {
get {
return _includeRemindersWithNoDueDate
} set (newVal) {
_includeRemindersWithNoDueDate = newVal
// saveSettings(self, index: ARRAY_INDEX_WHERE_TO_SAVE_STRUCT, saveKey: QUERY_SETTINGS_KEY)
}
}
}
func saveSampleArrayOfQuerySettings(saveKey: String) {
let sampleArray = [QuerySettings(), QuerySettings()]
// Persist
let archivedSettingsArray = NSKeyedArchiver.archivedDataWithRootObject(sampleArray as! AnyObject)
// RUNTIME ERROR AT PREVIOUS LINE: "Could not cast value of type 'Swift.Array<RemindersPro.QuerySettings>' (0x112df10d8) to 'Swift.AnyObject' (0x1169d6018)."
NSUserDefaults.standardUserDefaults().setObject(archivedSettingsArray, forKey: saveKey)
NSUserDefaults.standardUserDefaults().synchronize()
// For Testing Purposes - Load the saved settings
if let retrievedArchivedSettingsArray : AnyObject = NSUserDefaults.standardUserDefaults().objectForKey(saveKey) {
if let settingsArray : AnyObject = NSKeyedUnarchiver.unarchiveObjectWithData(retrievedArchivedSettingsArray as! NSData) {
let arr = settingsArray as! [QuerySettings]
print(arr.first)
}
}
}
saveSampleArrayOfQuerySettings("saveKey")
我想知道是否需要对我的结构体进行编码。我查看了这些帖子,但奇怪的是甚至无法使这些帖子中的样例工作(更不用说将它们应用到我的代码中了)。
请问如何让它正常工作呢?以下是需要查看的帖子:
- How to save an array of objects to NSUserDefault with swift? - (Swift) Storing and retrieving Array to NSUserDefaults - How to save an array of custom structs to plist swift 谢谢。