在Swift中写入plist文件

阿列克谢·纳希莫夫(Alexey Nakhimov)

我有一个示例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没有更改。仍然有两个值。这些值--City: TEST, ZMV: TEST, Country: TEST未添加。如果我重新启动该应用程序,那么虽然应该有4行,但我仍然看到3行输出。

怎么了?

更新:

我将代码更改为此:

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", "Name": "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), ZMV: \(cityZMV), Country: \(cityCountry)")
        }
    }
    else {
        println("ERROR!")
    }

}

现在,当您运行应用程序时,输出中的行数增加了:

City: Moscow, ZMV: 00000.1.27612, Country: RU
City: New York, ZMV: 10001.5.99999, Country: US
City: TEST, ZMV: TEST, Country: TEST
City: TEST, ZMV: TEST, Country: TEST
........

但!如果查看位于项目文件夹(Xcode中的Project Navigator)中的favCities.plist文件,它仍然保持不变-有两行!

如果沿着路径行进,该路径存储在变量中plistpath-/Users/admin/Library/Developer/CoreSimulator/Devices/55FD9B7F-78F6-47E2-9874-AF30A21CD4A6/data/Containers/Data/Application/DEE6C3C8-6A44-4255-9A87-2CEF6082A63A/Documents/

然后还有一个文件favCities.plist。它包含对应用程序进行的所有更改。我究竟做错了什么?如何在项目文件夹(Project Navigator)中的文件中查看所有更改?

阿列克谢·纳希莫夫(Alexey Nakhimov)

是的,这解决了问题-Swift-阅读plist

但是项目文件夹中的plist文件仅用于类似属性的情况.....

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift 2.1中写入/读取Plist

来自分类Dev

如何从Xamarin.ios中的.plist文件读取或写入数据

来自分类Dev

将数组写入我的项目目录的plist文件中

来自分类Dev

在Swift中创建CSV文件并写入文件

来自分类Dev

Swift:读取 plist 文件

来自分类Dev

努力将数组保存到Swift中的plist文件中

来自分类Dev

使用Swift读取/写入数组plist

来自分类Dev

在Swift 3中将数据保存到.plist文件

来自分类Dev

plist 文件中的数组

来自分类Dev

写入文档目录Xcode中的plist

来自分类Dev

将嵌套字典写入plist时出现类型问题(Swift)

来自分类Dev

将嵌套字典写入plist时出现类型问题(Swift)

来自分类Dev

Swift检查plist文件是否存在

来自分类Dev

在Swift中将数据保存到.plist文件

来自分类Dev

Swift如何编写plist文件并更改值?

来自分类Dev

Swift检查plist文件是否存在

来自分类Dev

如何在iOS Swift中根据环境设置不同的Google-Service-info-plist文件?

来自分类Dev

如何将这个.plist文件直接解析为Swift中的对象?

来自分类Dev

在Prolog中写入文件

来自分类Dev

在TCL中写入文件

来自分类Dev

在Prolog中写入文件

来自分类Dev

在OSX中写入文件

来自分类Dev

在Qt中写入文件

来自分类Dev

在UNIX中写入文件

来自分类Dev

plist文件是在swift 1.2中编写的,但没有被编写或在swift 2.0中工作,我该怎么办?

来自分类Dev

如何在Swift中从PLIST读取数据?

来自分类Dev

如何在Swift中从PLIST读取数据?

来自分类Dev

在Swift中无法获取plist URL

来自分类Dev

在Swift中从Plist加载网址图片