-1

可能重复:
如何成功写入 plist?

我想简单地在 Plist 文件中写入 UISwitch 的布尔状态(true 或 false)。

这是我已经得到的,但 plist 中的值没有改变:

。H

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {


    IBOutlet UISwitch *mySwitch;

}

-(IBAction)changeThingsInPlist:(id)sender;

@end

.m

#import "ViewController.h"

BOOL changeThing;
#define PLIST_PATH @"/var/mobile/Library/Preferences/com.myname.plistname.plist"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];


    changeThing = [[[NSDictionary dictionaryWithContentsOfFile:PLIST_PATH]valueForKey:@"changeThing"]boolValue];

}

-(IBAction)changeThingsInPlist:(id)sender {

    if (mySwitch.on = YES) {
        changeThing = true;
    }
    else {
        changeThing = false;
    }
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

我只是想通过切换 uiswitch 来更改 plist 文件中的值(true 或 false)。

我应该使用 NSUserDefaults 吗?:)

我读过它,但我从来没有得到,如何在 NSUserDefaults 中设置 plist 路径

谢谢

4

1 回答 1

0

我会说你应该创建一个 NSString 并根据 UISwitch 的布尔值设置它的值。

NSString *valueOfSwitch;
if (mySwitch.on == YES){
valueOfSwitch = [NSString stringWithFormat:@"ON"];
}
else {
valueOfSwitch = [NSString stringWithFormat:@"OFF"];
}

然后你应该像这样将该字符串放在 NSUserDefaults 中。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:valueOfSwitch forKey:@"switchValue"];   //remember this for retrieving
[defaults synchronize];

然后要检索此字符串,请执行此操作。

NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
NSString *switchString = [data objectForKey:@"switchValue"]; //same key that you used for saving
[data synchronize];

从那里你可以用那个字符串做任何你想做的事情。

于 2012-08-07T19:55:34.017 回答