Fad*_*orm 99 sharedpreferences ios
我正在将一个Android应用程序移植到ios,我使用的一件事是android中的共享首选项,以便每次完成一个级别时保存.
这样,当用户重新进入应用程序时,他们可以看到他们达到3级或其他任何级别.
iOS中是否有类似的机制?或者我是否必须手动写出特定于应用程序的文件?
如果是这样,我如何写出只对我的应用程序可见的文件?
Som*_*Guy 193
使用NSUserDefaults: - 请注意,这是针对一小部分数据,例如您提到的当前级别.不要滥用它并将其用作大型数据库,因为每次打开应用程序时都会将其加载到内存中,无论您是否需要某些内容(应用程序的其他部分也将使用此内容).
读:
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)
}
Ben*_*Ben 36
这是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)
更新
synchronize()等待默认数据库的任何挂起的异步更新并返回; 此方法现在是不必要的,不应使用.
class Configuration {
    static func value<T>(defaultValue: T, forKey key: String) -> T{
        let preferences = UserDefaults.standard
        return preferences.object(forKey: key) == nil ? defaultValue : preferences.object(forKey: key) as! T
    }
    static func value(value: Any, forKey key: String){
        UserDefaults.standard.set(value, forKey: key)
    }
}
例子
//set
Configuration.value(value: "my_value", forKey: "key_1")
//get
let myValue = Configuration.value(defaultValue: "default_value", forKey: "key_1")
| 归档时间: | 
 | 
| 查看次数: | 53832 次 | 
| 最近记录: |