在Swift中写入plist文件
我有一个样本plist文件,favCities.plist.这是我的示例代码:
override func viewDidLoad() { super.viewDidLoad() let path = NSBundle.mainBundle().pathForResource("favCities",ofType: "plist") var plistArray = NSArray(contentsOfFile: path) as [Dictionary<String,String>] var addDic: Dictionary = ["ZMV": "TEST","Name": "TEST","Country": "TEST"] plistArray += addDic (plistArray as NSArray).writeToFile(path,atomically: true) var plistArray2 = NSArray(contentsOfFile: path) for tempDict1 in plistArray2 { var tempDict2: NSDictionary = tempDict1 as NSDictionary var cityName: String = tempDict2.valueForKey("Name") as String var cityZMV: String = tempDict2.valueForKey("ZMV") as String var cityCountry: String = tempDict2.valueForKey("Country") as String println("City: (cityName),ZMV: (cityZMV),Country: (cityCountry)") } 乍一看,一切都运作良好.输出如下所示: City: Moscow,ZMV: 00000.1.27612,Country: RU City: New York,ZMV: 10001.5.99999,Country: US City: TEST,ZMV: TEST,Country: TEST 但是当我打断应用程序时,我发现我的文件favCities.plist没有改变.还有两个值.这些值 – 城市:TEST,ZMV:TEST,国家:TEST – 未添加.如果我重新启动应用程序,那么我再次看到3行输出,尽管应该有4行. 怎么了? 更新: 我把代码更改为: override func viewDidLoad() { super.viewDidLoad() let fileManager = (NSFileManager.defaultManager()) let directorys : [String]? = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.AllDomainsMask,true) as? [String] if (directorys! != nil){ let directories:[String] = directorys!; let dictionary = directories[0]; let plistfile = "favCities.plist" let plistpath = dictionary.stringByAppendingPathComponent(plistfile); println("(plistpath)") var plistArray = NSArray(contentsOfFile: plistpath) as [Dictionary<String,String>] var addDic: Dictionary = ["ZMV": "TEST","Country": "TEST"] plistArray += addDic (plistArray as NSArray).writeToFile(plistpath,atomically: false) var plistArray2 = NSArray(contentsOfFile: plistpath) for tempDict1 in plistArray2 { var tempDict2: NSDictionary = tempDict1 as NSDictionary var cityName: String = tempDict2.valueForKey("Name") as String var cityZMV: String = tempDict2.valueForKey("ZMV") as String var cityCountry: String = tempDict2.valueForKey("Country") as String println("City: (cityName),Country: (cityCountry)") } } else { println("ERROR!") } } 现在,当您运行应用程序时,输出中的行数会增加: City: Moscow,Country: TEST City: TEST,Country: TEST ........ 但!如果查看文件favCities.plist,它位于项目文件夹(Xcode中的Project Navigator)中,它仍然保持不变 – 有两行! 如果沿着路径走,它存储在变量plistpath中 – / Users / admin / Library / Developer / CoreSimulator / Devices / 55FD9B7F-78F6-47E2-9874-AF30A21CD4A6 / data / Containers / Data / Application / DEE6C3C8-6A44-4255 -9A87-2CEF6082A63A /文档/ 然后还有一个文件favCities.plist.它包含构成应用程序的所有更改.我究竟做错了什么?如何查看位于项目文件夹(Project Navigator)中的文件中的所有更改? 解决方法
是的,这解决了问题 –
Swift – Read plist
但项目文件夹中的plist文件仅用于属性情况….. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |