我在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;
}
但这不起作用,该行不会被删除。 如何解决它
感谢所有人。
答案 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;
}