【问题标题】:Writing the state of a UISwitch to file将 UISwitch 的状态写入文件
【发布时间】:2013-02-09 15:55:24
【问题描述】:

我正在尝试将 UISwitch 的状态写入文件,因此每次应用启动时它都会记住它之前是打开还是关闭。

-(IBAction) switchValueChanged {
   if (Hard1ON.on) {
   isH1 = (@"YES");
   //save above yes to file

经过一番搜索,我发现这是一段用于保存到文件的代码:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error

但是,它会引发“使用未声明的标识符“writeToFile”错误。谁能告诉我怎么了?

【问题讨论】:

  • 你能把代码贴在你打电话给writeToFile的地方吗?
  • 您可能需要考虑NSUserDefaults*.com/a/4231746/653513 无论如何,您发布的代码与错误无关:请参阅 lxt 的评论。

标签: ios objective-c xcode ipad uiswitch


【解决方案1】:

以字符串形式保存到文件(可能不是最好的解决方案):

- (IBAction)switchValueChanged:(id)sender
{
    NSString *stateAsString;
    if ([sender isOn]) {
        stateAsString = @"YES";
    } else {
        stateAsString = @"NO";
    }
    [stateAsString 
        writeToFile:@"/path/to/file"
        atomically:NO 
        encoding:NSUTF8StringEncoding 
        error:NULL
    ];
}

将状态写入 NSUserDefaults 可能是一个更好的主意:

#define kSwitchStateKey @"SwitchState"

- (IBAction)switchValueChanged:(id)sender
{
    [[NSUserDefaults standardUserDefaults]
        setObject:@([sender isOn)
        forKey:kSwitchStateKey
    ];
}            

【讨论】:

  • 刚刚熟悉了 NSUserDefaults,看来您是对的,非常感谢您的帮助。