NSUserDefaults写入字符串并在之后清理它

时间:2012-11-03 16:43:32

标签: objective-c ios uiwebview plist nsuserdefaults

我在NSUserDefaults

中写了一个字符串
[[NSUserDefaults standardUserDefaults] setObject: myString forKey: @ "String"];

然后我从NSUserDefaults中取出这个字符串并返回

- (NSString *) retrieveString
{
     NSString * recoveredString = [[NSUserDefaults standardUserDefaults] objectForKey: @ "String"];
     return recoveredString;
}

然后在viewDidLoad中将返回的字符串写入另一个字符串

NSString * filePath = [self retrieveString];

我需要在我返回她之后删除一串NSUserDefaults - (NSString *)retrievevestring

我这样做

    - (NSString *) retrieveString
        {
             NSString * recoveredString = [[NSUserDefaults standardUserDefaults] objectForKey: @ "String"];
             [[NSUserDefaults standardUserDefaults] removeObjectForKey: @ "String"];
             return recoveredString;

        }

但这不起作用,该行不会被删除。 如何解决它

感谢所有人。

2 个答案:

答案 0 :(得分:0)

NSUserDefaults仅定期更新其数据,而不是每次调用setter或getter时更新。如果您想立即更新,请致电

[[NSUserDefaults standardUserDefaults] synchronize];

答案 1 :(得分:0)

您需要添加synchronize调用并移动您的回复调用(因此它是方法中的最后一行)。所以,你的代码应该是这样的:

- (NSString *) retrieveString
{
    NSString * recoveredString = [NSString stringWithString:[[NSUserDefaults standardUserDefaults] objectForKey: @ "String"]];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey: @ "String"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    return recoveredString;
}