如何清除在 Xcode 中创建的 plist 中的数据?

Posted

技术标签:

【中文标题】如何清除在 Xcode 中创建的 plist 中的数据?【英文标题】:How do I clear the data in a plist created in Xcode? 【发布时间】:2012-01-23 22:28:07 【问题描述】:

我一直在使用 plist 在我的应用中存储数据。我已经能够毫无问题地从 plist 写入和读取。我在 Xcode 中创建了这个 plist,我自己添加了数字、字典和数组的行。但是,我希望能够将 plist 重置为原始状态,并且必须有比将 0 或 nil 值写入 plist 中的每个条目更简单的方法。那么将 plist 重置为其初始默认状态的最简单方法是什么?

【问题讨论】:

【参考方案1】:

最简单的方法是使用 NSFileManager 删除文件,如下所示:

[[NSFileManager defaultManager] removeItemAtPath:plistPath error:NULL];

或者如果您不想这样做,假设 plist 是一本字典,只需从您的应用程序包中加载一个,然后覆盖您的文档中的那个,如下所示:

NSDictionary *originalPlist = [NSDictionary dictionaryWithContentsOfFile:bundleFile];
[originalPlist writeToFile:documentsFile atomically:YES];

这将用原始文件覆盖保存的文件。

【讨论】:

谢谢你,这正是我想要的。我想我只是需要有人直接向我解释。 是否可以从 plist 文件中删除单个条目?基本上我将日期存储在我的 plist 中,我希望随着 plist 存储的日期到期,该日期/条目应该从plist 和 plist 应该被刷新。我该怎么做? 你不会直接从 plist 中删除它,你可以通过使用 mutableCopy 方法创建一个 NSMutableDictionary 然后使用 removeObjectForKey: 方法从字典中删除它。然后将新字典保存在旧 plist 的顶部。 删除文件的新语法现在是:[[NSFileManager defaultManager] removeItemAtPath:plistPath error:nil];【参考方案2】:
 NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"mobile-watchlist.plist"];
    [fileManager removeItemAtPath: fullPath error:NULL];

【讨论】:

【参考方案3】:

您也可以尝试重命名您的 Plist。这是我认为最少的工作。

【讨论】:

以上是关于如何清除在 Xcode 中创建的 plist 中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 4 中将 plist 的根对象类型更改为 NSArray

如何在 Xcode 中创建 Entitlement.plist 文件?

我们如何在 Xcode 项目中创建自己的 plist 文件?

如何在 xcode 4.3.2 中创建 plist 文件

Xcode 4 Core Data:如何使用在数据模型编辑器中创建的获取属性

使在 Xcode 11 中创建的项目向后兼容