1

ジェイルブレイクされたデバイスの開発。

私はここで私の問題に対する解決策を探しました。UISwitch の状態を保存するために NSUserDefaults を使用していますが、多くのコードが機能しないと人々は言います。

UISwitch を使用して、iOS の起動デーモンをロード/アンロードしています。私は非常に近くなりましたが、スイッチの状態は保存されません。これは私が使用しているコードです。

@synthesize toggleSwitch;

- (void)viewDidAppear:(BOOL)animated
{

[super viewDidAppear:animated];

if([[NSUserDefaults standardUserDefaults] boolForKey:@"switch"]) toggleSwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];

}

- (void)switchValueChanged {
if (toggleSwitch.on) {
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];
    switchlabel.text = @"Enabled";
    const char *onchar = [[NSString stringWithString:@"launchctl load -wF /System/Library/LaunchDaemons/com.launch.daemon.plist"] UTF8String];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];
    setuid(0); system(onchar);
    if (system(onchar) == 0){
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    } else {
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];}
} else {
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:TRUE];
    switchlabel.text = @"Disabled";
    const char *offchar = [[NSString stringWithString:@"launchctl unload -wF /System/Library/LaunchDaemons/com.launch.daemon.plist"] UTF8String];
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];
    setuid(0); system(offchar);
    if (system(offchar) == 0){
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    } else {
        [[NSUserDefaults standardUserDefaults] setBool:self.toggleSwitch.on forKey:@"switch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE]; }
}

ブール値はアプリの plist に書き込まれます。私は自分が何を間違えたのか分からないようです。運が悪いオーバーフローに関する質問からいくつかの例をつなぎました。コマンドが失敗しても、スイッチは保存する必要があります。

誰かが説明して、何を編集する必要があるかを教えてください。これは私を完全に夢中にさせています。

4

0 に答える 0