[英]How to save data to multidimensional array in plist file
我想將一些配置數據保存到我的plist文件中,該文件包含數組和常規變量類型。 看起來像這樣:
( http://s10.postimg.org/f2xpgur1l/plist.png )(對不起,我無法附加任何圖像)
我執行此操作的函數如下所示:
// Saves the data into a plist file
func saveObject(i_fileName: String, i_keyForValueToSave: String, i_valueToSave: String, i_keyForXInitializer:String, i_valueXInitializer: String) {
var fileName: String = i_fileName
var keyForValueToSave: String = i_keyForValueToSave
var valueToSave: AnyObject = i_valueToSave
var keyForXInitializer: String = i_keyForXInitializer
var valueXInitializer: String = i_valueXInitializer
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths.objectAtIndex(0) as! NSString
let path = documentsDirectory.stringByAppendingPathComponent(fileName)
var dict: NSMutableDictionary = [keyForXInitializer: valueXInitializer]
//saving values
dict.setObject(valueToSave, forKey: keyForValueToSave)
//writing to plist
dict.writeToFile(path, atomically: false)
let resultDictionary = NSMutableDictionary(contentsOfFile: path)
println("Saved Data.plist file is --> \(resultDictionary?.description)")
}
我這樣稱呼它:
saveObject("Selection.plist", "Item 0", "testConfig, "Item 3", "XInitializerItem_01")
結果如下所示:
( http://s13.postimg.org/kbq103707/result.png )(對不起,我無法附加任何圖像)
如您所見,應保存到數組中的“ testConfig”將作為普通字符串保存在pilst文件中。 這不是我的目標。 我想添加到此數組的每個項目。 我在SWIFT中確實很新,但在空間上卻停留了一段時間。 任何幫助將是巨大的! 謝謝!
您將valueToSave
聲明為AnyObject
但它包含i_valueToSave
,該i_valueToSave
在函數參數中聲明為String
。
因此,當您執行dict.setObject(valueToSave, forKey: keyForValueToSave)
它將保存一個String
。
您應該將i_valueToSave
函數參數的類型聲明為AnyObject
而不是String
,然后在函數內部可以將i_valueToSave
轉換為所需的類型,然后再進行保存。
假設i_valueToSave
是一個字符串數組,然后:
if let valueToSave = i_valueToSave as? [String] {
dict.setObject(valueToSave, forKey: keyForValueToSave)
}
如果是NSArray:
if let valueToSave = i_valueToSave as? NSArray {
dict.setObject(valueToSave, forKey: keyForValueToSave)
}
等等。
下面的代碼創建了您需要的plist,您只需要正確填充值即可滿足您的需求
func saveObject(i_fileName: String, i_keyForValueToSave: String, i_valueToSave: String, i_keyForXInitializer:String, i_valueXInitializer: String) {
var fileName: String = i_fileName
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
let documentsDirectory = paths.objectAtIndex(0) as! NSString
let path = documentsDirectory.stringByAppendingPathComponent(fileName)
var dict = NSMutableDictionary()
var item0 = [1,2,3]
var item1 = [1,2,3,4]
var item2 = false
var item3 = "xInitializerItem_01"
dict.setObject([item0, item1, item2, item3], forKey: "selection_01")
item0 = [4,5,6]
item1 = [5,6,7,8]
item2 = true
item3 = "xInitializerItem_02"
dict.setObject([item0, item1, item2, item3], forKey: "selection_02")
dict.writeToFile(path, atomically: true)
let resultDictionary = NSMutableDictionary(contentsOfFile: path)
println("Saved Data.plist file is --> \(resultDictionary?.description)")
}
這可能是由於上面的代碼導致的:
您無法將值追加到plist,因此每次保存時都需要再次保存所有值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.