相当于在iOS中的共享偏好
我正在移植一个Android应用程序到iOS,我使用的一个事情是在Android的共享偏好来保存每一个级别完成。
这样,当用户回到应用程序,他们可以看到他们达到3级或别的什么。
iOS中是否有类似的机制? 还是我必须手动写出一个特定于应用程序的文件?
如果是这样,我如何写出只对我的应用程序可见的文件?
使用NSUserDefaults : – 请注意,这是为了小数据,比如你提到的当前级别。 不要滥用它,并将其用作大型数据库,因为每次打开应用程序时都会将其加载到内存中,无论您是否需要其他应用程序(应用程序的其他部分也会使用此function)。
Objective-C的:
读:
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; NSString *currentLevelKey = @"currentlevel"; if ([preferences objectForKey:currentLevelKey] == nil) { // Doesn't exist. } else { // Get current level const NSInteger currentLevel = [preferences integerForKey:currentLevelKey]; }
写作:
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults]; NSString *currentLevelKey = @"currentlevel"; const NSInteger currentLevel = ...; [preferences setInteger:currentLevel forKey:currentLevelKey]; // Save to disk const BOOL didSave = [preferences synchronize]; if (!didSave) { // Couldn't save (I've never seen this happen in real world testing) }
。
迅速:
读:
let preferences = NSUserDefaults.standardUserDefaults() let currentLevelKey = "currentLevel" if preferences.objectForKey(currentLevelKey) == nil { // Doesn't exist } else { let currentLevel = preferences.integerForKey(currentLevelKey) }
写作:
let preferences = NSUserDefaults.standardUserDefaults() let currentLevelKey = "currentLevel" let currentLevel = ... preferences.setInteger(currentLevel, forKey: currentLevelKey) // Save to disk let didSave = preferences.synchronize() if !didSave { // Couldn't save (I've never seen this happen in real world testing) }
这里是Swift 3的更新
读
let preferences = UserDefaults.standard let currentLevelKey = "currentLevel" if preferences.object(forKey: currentLevelKey) == nil { // Doesn't exist } else { let currentLevel = preferences.integer(forKey: currentLevelKey) }
写作
let preferences = UserDefaults.standard let currentLevel = ... let currentLevelKey = "currentLevel" preferences.set(currentLevel, forKey: currentLevelKey) preferences.synchronize()