objective-c - 在运行时读取 plist 文件
问题描述
我在我的程序中包含了一个 plist 文件并在本地调用它
NSString *plistpath = [[NSBundle mainBundle] pathForResource:@"pli" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistpath];
NSArray *cont = [dict allValues];
我希望我的程序在我手动更新文件(而不是通过程序)时读取文件,在运行时从 plist 文件中添加或删除数据,而不必停止执行并再次开始运行它。有什么办法可以做到这一点?
请帮忙
解决方案
这是将数据保存在 .plist 文件中的方法
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to our Data/plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"myData.plist"];
NSError *writeError = nil;
NSData *plistData = [NSPropertyListSerialization dataWithPropertyList:yourDictionary format:NSPropertyListXMLFormat_v1_0 options:NSPropertyListImmutable error:&writeError];
if(plistData)
{
[plistData writeToFile:plistPath atomically:YES];
NSLog(@"Data saved sucessfully");
}
else
{
NSLog(@"Error in saveData: %@", writeError.localizedDescription);
}
从包中读取 plist 并从中获取 Root Dictionary
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"myData.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
{
plistPath = [[NSBundle mainBundle] pathForResource:@"myData" ofType:@"plist"];
}
NSDictionary *resultDic = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
推荐阅读
- python - Python 在保存函数定义的同时运行 JavaScript 代码
- c++ - 地图岛数量 - char ** 行和 /columns 的问题
- python - Python ValueError:ColumnTransformer,列顺序不相等
- angular - 刷新一系列 Angular HTTP TestRequest
- java - 线程不可中断
- java - 为什么要在测试时创建/删除测试数据库?
- r - 如何在R中选择某个日期的前5名?
- c# - 获取@NITEmisor:来自 XML 文件 c# 的值
- java - 在 GUI Java Swing 中从上到下调整按钮
- ruby-on-rails - Rails 6 - 将渲染的内容从 erb 模板写入模型属性