从plist获取并比较CFBundleVersion

Chta7

我正在尝试比较CFBundleVersioncom.apple.mobile.installation.plist中2个应用程序的键,其中包括iPhone上每个已安装应用程序的信息

NSString *appBundleID =@"net.someapp.app";
NSString *appBundleID2=@"net.someapp.app2";

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:
         @"/var/mobile/Library/Caches/com.apple.mobile.installation.plist"];
NSDictionary *User = [dict valueForKey:@"User"];

//get first app version
NSDictionary *bundleID = [User valueForKey:appBundleID];
NSString *appVersion = [bundleID valueForKey:@"CFBundleVersion"];

//get second app version
NSDictionary *bundleID2 = [User valueForKey:appBundleID2];
NSString *appVer2 = [bundleID2 valueForKey:@"CFBundleVersion"];

[dict release];
 
if ([appVersion isEqualToString:appVer2]) {
     NSString *str1=[NSString stringWithFormat:@"Original Version: %@",appVersion];
     NSString *str2=[NSString stringWithFormat:@"2nd Version: %@",appVer2];
     NSString *msg=[NSString stringWithFormat:@"%@\n%@",str1,str2];
     UIAlertView* alertView = [[UIAlertView alloc]
           initWithTitle:@"Same Versions!" message:msg delegate:nil
       cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alertView show]; 
}
else {
     NSString *str1=[NSString stringWithFormat:@"Original Version: %@",appVersion];
     NSString *str2=[NSString stringWithFormat:@"2nd Version: %@",appVer2];         
     NSString *msg=[NSString stringWithFormat:@"%@\n%@",str1,str2];
     UIAlertView* alertView = [[UIAlertView alloc]
         initWithTitle:@"Different Versions!" message:msg delegate:nil
            cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alertView show]; 
}

这两个应用程序的版本当前设置为2.11.8

我得到以下错误结果: 结果错误

如果我手动设置NSString:

NSString *appVersion =@"2.11.8";
NSString *appVer2 =@"2.11.8";

我得到正确的预期结果:

正确的结果

我还尝试了其他方法来比较字符串,但结果始终相同,所以我猜问题出在获取键的值上?任何帮助表示赞赏

马丁·R

我已经习惯于ARC,以至于我不再100%知道MRC规则。但是我假设您要么必须从字典中retain获取值appVersion要么将appVer2推迟[dict release]到不再需要这些值之后。由于您不拥有从字典中获取的值,因此如果释放字典,它们将变为无效。

如果使用ARC编译,不会有问题!)

备注:从字典中获取值的指定方法是objectForKey:valueForKey:在许多情况下也可以使用,但可以有所不同。它仅应用于键值编码魔术。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在启用了资源库的情况下,在Xcode 5中修改Info.plist的CFBundleVersion

来自分类Dev

该捆绑包无效。Info.plist文件缺少必需的密钥:CFBundleVersion

来自分类Dev

如何从plist获取属性

来自分类Dev

比较并获取项目属性

来自分类Dev

定制获取比较器

来自分类Dev

在Swift中无法获取plist URL

来自分类Dev

如何获取项目中的plist文件列表

来自分类Dev

使用运行脚本比较info.plist中的值

来自分类Dev

比较或搜索后获取索引

来自分类Dev

比较时获取数组值

来自分类Dev

查询和获取比较SQLite

来自分类Dev

CLIPS输入获取和比较

来自分类Dev

PHP数组比较以获取总和

来自分类Dev

从 Sql 中获取比较数据

来自分类Dev

通过plist的代码未获取环境变量

来自分类Dev

从plist iOS仅获取某些字符串

来自分类Dev

快速从plist获取数组名称作为tableview标签

来自分类Dev

coredata获取请求中的日期比较?

来自分类Dev

PHP在比较时获取数组值的和

来自分类Dev

比较xml模式列以获取更新脚本

来自分类Dev

比较表并获取不匹配的值

来自分类Dev

获取密码时的字符串比较

来自分类Dev

PHP:比较数组,获取最大价值并更新

来自分类Dev

比较从表中获取的数据时出错

来自分类Dev

从标签比较中获取json id

来自分类Dev

如何获取和比较libcurl版本?

来自分类Dev

比较处理指令并获取文件名

来自分类Dev

如何比较从Reflection的“ GetValue”获取的值类型?

来自分类Dev

获取当前时间并与数组比较