2

你能告诉我这段代码有什么错误吗?我喜欢检查是否在每次启动时都安装了 cydia.app,如果安装了 Cydia,则标签应该更改并且应该启用一个按钮,但没有任何反应。

这是代码:

NSString *filePath = @"/Applications/Cydia.app";
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
    Lable.text = @"You are jailbroken";
    Button.enabled = YES;
}
4

2 回答 2

3

如果要启用按钮,则需要将两行都用括号括起来,并删除条件后的分号。基本上,您的代码应如下所示:

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://"]]){
     Lable.text = @"You are jailbroken";
     Button.enabled = YES;
}

否则,通过插入分号,您当前在条件语句之后使用的实际上是一个空语句。即使您删除分号,也只会执行第一行。因此,您需要删除分号,并插入花括号来设置条件的范围。

编辑:

也许您可能需要尝试构建路径而不是对其进行硬编码:

NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES) stringByAppendingPathComponent: @"cydia.app"];

如果该文件仍然不存在,请尝试列出文件和目录中的文件,NSApplicationDirectory以查看该文件是否确实存在,或者您需要在其他地方搜索(甚至可能是子文件夹)。

于 2012-09-09T23:32:50.673 回答
1

在你的代码中设置一些断点,这样当你调试你的代码时,你可以看到你的条件语句正在评估什么,并取决于它,然后看看你的 if 结构中的代码发生了什么。在很多情况下,像这样,简单地设置断点并快速跳过你的代码会比在 Internet 上发布问题更快地引导你解决问题,并不是人们不会帮助你,而是你不会被阻止和可以继续工作。

干杯。

于 2012-09-10T00:51:44.783 回答