如何清除在 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 文件?