本地配置文件比对更新覆盖
来源:互联网 发布:软件售后服务承诺英文 编辑:程序博客网 时间:2024/06/05 06:31
检测本地文件是否更新过,我用过几种方法,写出来跟大家共享:
第一种:直接比对文件是否变化了,这个肯定不会错,但是就是比对的有点多:
NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:0];
NSMutableArray *writeTempArray = [NSMutableArray array];
BOOL bNeedUpdate = false;
NSString *defaultFilePath = S_GetPathInBundleDirectory(fileName);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *writableFilePath = S_GetPathInDocumentDirectory([[fileName stringByDeletingPathExtension] stringByAppendingPathExtension:@"plist"]);
BOOL bFileExist = [fileManager fileExistsAtPath:writableFilePath];
if (bFileExist == false) {
bNeedUpdate = true;
}else {
//读出来bundle中的文件
NSString* xmlStr = [[NSString alloc] initWithContentsOfFile:defaultFilePath encoding:NSUTF8StringEncoding error:&error];
NSDictionary *xmlFileContentDic = nil;
if(xmlStr) {
xmlFileContentDic = [PbXMLReader dictionaryForXMLString:xmlStr error:&error];
if (error) {
return;
}
tempArray = (NSMutableArray *)[[xmlFileContentDic objectForKey:@"pbitems"] objectForKey:@"item"];
}
//读出document中的文件
NSDictionary *writeDic = [[NSDictionary alloc] initWithContentsOfFile:writableFilePath];
writeTempArray = [writeDic objectForKey:[fileName stringByDeletingPathExtension]];
//对两个数组直接进行比对,不一样,就重新写入,否则就跳过
if ([tempArray isEqualToArray:writeTempArray]) {
bNeedUpdate = NO;
}else {
bNeedUpdate = YES;
}
}
if (bNeedUpdate == YES)
{
//那就写文件吧
}
第二种方法,在配置文件中增加一个version字符串,每次更新都改这个version字符串,好处就是比对少,但是千万别忘记修改完配置文件后不知道修改这个version
if(xmlStr) {
xmlFileContentDic = [XMLReader dictionaryForXMLString:xmlStr error:&error];
if (error) {
return;
}
tempArray = (NSMutableArray *)[[xmlFileContentDic objectForKey:@"pbitems"] objectForKey:@"item"];
newVersion = [[xmlFileContentDic objectForKey:@"pbitems"] objectForKey:@"version"];
NSString * oldVersion = readHQTitleSettingsVersion([[fileName stringByDeletingPathExtension] stringByAppendingPathExtension:@"plist"]);
if (![newVersion isEqualToString:oldVersion]|| !oldVersion) {
bNeedUpdate = true;
}
}
if (bNeedUpdate == true)
{
writeHQTitleSettings(fileName, tempArray, newVersion);
}
}
NSString * GlobalData::readHQTitleSettingsVersion(NSString * plistFileName)
{
NSString * version = nil;
NSString *plistFilePath = YS_GetPathInDocumentDirectory(plistFileName);
NSDictionary* dataDic = [[NSDictionary alloc] initWithContentsOfFile:plistFilePath];
if (dataDic) {
version = [dataDic objectForKey:@"version"];
}
return version;
}
- 本地配置文件比对更新覆盖
- svn更新,覆盖本地代码,提交
- Oracle数据库比对更新数据
- ORCAD+PADS 更改原理图怎么更新到PCB 比对
- ios 比对应用版本号,确定是否需要显示更新
- 对Java配置文件Properties的读取、写入与更新操作
- 对Java配置文件Properties的读取、写入与更新操作
- Android studio SVN覆盖更新后找回本地代码的方法
- git强制覆盖本地
- git 强制覆盖本地
- 关于Eclipse的SVN插件本地与历史资源比对乱码的问题
- bulk collect forall等批量更新优化方法比对【视频】
- PHP一键比对更新MYSQL数据库的一些想法
- git 用远程覆盖本地
- Git覆盖本地修改文件
- git 用远程覆盖本地
- 工作时间比对函数
- SQL比对ing
- 关于安装cocoapods遇到的一些坑(ERROR: Error installing cocoapods: activesupport requires Ruby version >= 2.2)
- Android权限大全
- 学习笔记-递归函数
- Mac 在终端退出命令行环境
- ios 应用内跳转微信
- 本地配置文件比对更新覆盖
- srs代码学习(6)--如何实现edge
- 创建GitHub技术博客全攻略
- addTwoNumbers --- 单纯研究一下
- 幸运数字---京东2017年在线笔试题
- C++ Primer 7.9 指向函数的指针
- Tomcat启动不成功,报错Failed to load the sqljdbc_auth.dll
- jquery点击左右图片切换源码
- mysql学习—查询数据库中特定的值对应的表