iOS Equivalent For Android Shared Preferences

后端 未结 4 1601
挽巷
挽巷 2020-12-22 18:08

I am porting an Android app to iOS, one thing I used was the Shared Preferences in Android to save each time a level was complete.

That way when the user gets back i

4条回答
  •  借酒劲吻你
    2020-12-22 18:19

    Use NSUserDefaults: - note that this is for small bits of data, such as the current level like you mentioned. Don't abuse this and use it as a large database, because it is loaded into memory every time you open your app, whether you need something from it or not (other parts of your app will also use this).

    Objective-C:

    Reading:

    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];
    }
    

    Writing:

    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)
    }
    

    .

    Swift:

    Reading:

    let preferences = NSUserDefaults.standardUserDefaults()
    
    let currentLevelKey = "currentLevel"
    
    if preferences.objectForKey(currentLevelKey) == nil {
        //  Doesn't exist
    } else {
        let currentLevel = preferences.integerForKey(currentLevelKey)
    }
    

    Writing:

    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)
    }
    

提交回复
热议问题