【问题标题】:using plist in iphone programming在 iphone 编程中使用 plist
【发布时间】:2011-01-12 04:39:26
【问题描述】:

我已阅读 Apple 的 plist 文档:http://developer.apple.com/library/mac/documentation/cocoa/Conceptual/PropertyLists/PropertyLists.pdf

但是我有几个问题:

1) 当我们使用 [dict writeToFile:plistPath atomically:YES] API 时,它会覆盖 plist 的当前内容吗?它没有在文档中说明任何内容。

2) 我们是否应该通过新文件->资源->属性列表在 Xcode 中手动创建 plist?或者我们应该有这个:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSData *xmlData = [NSPropertyListSerialization  //... a very long line here

if([fileManager fileExistsAtPath:plistPath]) {
    [xmlData writeToFile:plistPath atomically:YES];
}    
else {
    [fileManager createFileAtPath:plistPath contents:xmlData attributes:nil];
}

3) 我们如何检查我们是否真的将数据写入属性列表?我试过 products -> myapp.app -> "reveal in finder" -> 右键单击​​ -> show package contents,那里有一些 plist,但是我看不到正在写入的数据!这是否意味着我无法将数据写入 plist?

编辑:谢谢大家!抱歉今天犯傻了!

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios4 plist


    【解决方案1】:

    来自writeToFile:atomically:的描述

    如果 flag 为 YES,则将字典写入辅助文件,然后将辅助文件重命名为路径。如果 flag 为 NO,则直接将字典写入路径。 YES 选项保证即使系统在写入过程中崩溃,路径(如果存在)也不会损坏。

    由于它被写入辅助文件,然后重命名为指定路径,我假设它会覆盖文件的当前内容。

    您应该使用 NSFileManager 找到应用程序的文档目录并将 plist 写入那里。您不应该使用资源,因为您将在执行应用程序的过程中对其进行写入。

    添加一些日志记录(例如,NSLog(@"plist path: %@", plistPath);)以显示 plist 的写入位置。

    【讨论】:

    • 您不应该使用资源,因为您将在执行应用程序的过程中写入它。 - 对不起,我不明白你的意思......你是在谈论来自 NSManager 的 createFileAtPath 调用吗?
    • 您应该像这样查找应用程序的文档目录:[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 并在那里创建您的文件。你不应该在 Xcode 中创建一个资源然后尝试从你的应用程序中写入它。
    • 换句话说,您的资源目录是只读的。您不应该在那里写入文件。
    • 哦,我明白了!我会试试的。非常感谢!
    • 顺便说一句,使用 NSFileManager 中的 createFileAtPath API 在 Documents 目录中创建文件(获取路径后)的正确方法是什么?
    【解决方案2】:

    1) 它将覆盖当前内容。如果您想在当前 plist 文件中添加更多数据,请先将其读取到字典中,然后添加数据并将其写回。 2)您可以手动添加它或以编程方式创建它。 3) 写入后只记录plist文件的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多