2

このコードのどこが間違っているか教えていただけますか? 起動ごとに cydia.app がインストールされているかどうかを確認したいのですが、Cydia がインストールされている場合は、Lable が変更され、ボタンが有効になるはずですが、何も起こりません。

コードは次のとおりです。

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;
}

それ以外の場合、セミコロンを挿入することによって条件ステートメントの後に現在使用しているものは、実際には null ステートメントです。セミコロンを削除しても、最初の行だけが実行されます。したがって、セミコロンを削除し、中かっこを挿入して条件の範囲を設定する必要があります。

編集:

おそらく、パスをハードコーディングするのではなく、構築してみる必要があるかもしれません:

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

それでもファイルが存在しない場合は、 内のファイルとディレクトリを一覧表示してNSApplicationDirectory、ファイルが実際に存在するかどうかを確認するか、別の場所 (おそらくサブフォルダー) を検索する必要があります。

于 2012-09-09T23:32:50.673 に答える
1

コードにいくつかのブレークポイントを設定して、コードをデバッグするときに、条件ステートメントが何に評価されているかを確認し、それに応じて if 構造のコードで何が起こっているかを確認できるようにします。多くの場合、このように単にブレークポイントを設定してコードをすばやくステップ オーバーするだけで、インターネットに質問を投稿するよりも早く解決策にたどり着きます。働き続けることができます。

乾杯。

于 2012-09-10T00:51:44.783 に答える