-1

我在 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 *) retrievestring

我这样做

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

        }

但这不起作用,该行没有被删除。如何修复它

谢谢大家。

4

2 回答 2

0

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

[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-11-03T16:47:24.723 回答
0

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

- (NSString *) retrieveString
{
    NSString * recoveredString = [NSString stringWithString:[[NSUserDefaults standardUserDefaults] objectForKey: @ "String"]];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey: @ "String"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    return recoveredString;
}
于 2012-11-03T17:12:57.437 回答