Dar*_*vil 5 iphone nsuserdefaults ios
我正在使用这些方法从 NSUserDefaults 保存和获取数据。但是 NSUserDefaults 在随机时间段后在设备中自动清除。我检查了项目-
代码...
+(NSString *) getUserName{
return [[NSUserDefaults standardUserDefaults] objectForKey:kAccUserNameKey];
}
+(void)saveUserName:(NSString *) value {
[[NSUserDefaults standardUserDefaults] setObject:value forKey:kAccUserNameKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
Run Code Online (Sandbox Code Playgroud)
使用 saveUserName 保存数据后,我使用 getUserName 正确获取数据,即使在重新启动应用程序后也是如此。但据报道有时会丢失数据。(从 didFinishLaunchingWithOptions 和 applicationWillEnterForeground 调用 getUserName) 为什么 NSUserDefault 正在重置?任何的想法??
从文档
- (NSUserDefaults *)standardUserDefaults 描述
返回共享的默认对象。如果共享默认对象尚不存在,则使用包含以下域名称的搜索列表创建它,按此顺序:
- NS参数域
- 由应用程序的包标识符标识的域
- NS全局域
- NS注册域
这是否意味着,有时共享对象还不存在并且返回 nil?什么是解决方案?
Iva*_*lev -1
您是否通过-registerDefaults:为数据字典创建了 NSRegistrationDomain 域?
正如文档所说:
在启动时,应用程序应该为其期望存在且有效的任何首选项注册默认值。
您可以这样做,以使其NSUSerDefaults正常工作:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary * defaultsDictionary = @{kAccUserNameKey : @"default name"}
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDictionary];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
在 中,defaultsDictionary您应该指定将在应用程序中使用的所有数据键及其默认值。
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |