このコードで何が間違っていると言えますか? 起動ごとにcydia.appがインストールされているかどうかを確認し、Cydiaがインストールされている場合は、ラベルを変更してボタンを有効にする必要がありますが、何も起こりません。
ここにコードです:
NSString *filePath = @"/Applications/Cydia.app";
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
Lable.text = @"You are jailbroken";
Button.enabled = YES;
}
回答:
回答№1の場合は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
ファイルが実際に存在するかどうかを確認するか、他の場所(サブフォルダーでさえ)を検索する必要があります。
回答№2の場合は1
コードにいくつかのブレークポイントを設定して、コードをデバッグすると、条件文の評価結果とそれに応じて、if構造内のコードで何が起こっているかを確認できます。多くの場合、このように、単にブレークポイントを設定してコードをすばやくステップオーバーすると、インターネットに質問を投稿するよりも速く解決につながります。作業を続けることができます。
乾杯。