美文网首页< iOS 数据持久化 >
iOS数据持久化 - NSUserDefaults

iOS数据持久化 - NSUserDefaults

作者: zhYx_ | 来源:发表于2020-07-22 16:39 被阅读0次

    一.简介

    • 特点
      1.NSUserDefaults是一个单例,相当于全局变量.
      2.NSUserDefaults是线程安全的.
      3.NSUserDefaults是以Plist文件的形式储存在沙盒中(~/Library/Preferences).
      4.明文储存,安全性不高.
      5.修改一个对象会加载整个文件,I/O操作频繁,不适合储存大量数据.
      6.储存的对象都是不可变的(即便储存时是可变对象).
      7.支持数据类型:NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等.
      8.NSUserDefaults会在合适的时机调用synchronize来储存数据,而不是实时储存.

    • 建议使用场景
      储存少量用户相关数据(用户设置/登录信息等).

    二.API

    @property (class, readonly, strong) NSUserDefaults *standardUserDefaults;
    @property (readonly, copy) NSArray<NSString *> *volatileDomainNames;
    
    + (void)resetStandardUserDefaults;
    - (instancetype)init;
    - (nullable instancetype)initWithSuiteName:(nullable NSString *)suitename API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)) NS_DESIGNATED_INITIALIZER;
    - (nullable id)initWithUser:(NSString *)username API_DEPRECATED("Use -init instead", macos(10.0,10.9), ios(2.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0));
    - (nullable id)objectForKey:(NSString *)defaultName;
    - (void)setObject:(nullable id)value forKey:(NSString *)defaultName;
    - (void)removeObjectForKey:(NSString *)defaultName;
    - (nullable NSString *)stringForKey:(NSString *)defaultName;
    - (nullable NSArray *)arrayForKey:(NSString *)defaultName;
    - (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
    - (nullable NSData *)dataForKey:(NSString *)defaultName;
    - (nullable NSArray<NSString *> *)stringArrayForKey:(NSString *)defaultName;
    - (NSInteger)integerForKey:(NSString *)defaultName;
    - (float)floatForKey:(NSString *)defaultName;
    - (double)doubleForKey:(NSString *)defaultName;
    - (BOOL)boolForKey:(NSString *)defaultName;
    - (nullable NSURL *)URLForKey:(NSString *)defaultName API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));
    - (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
    - (void)setFloat:(float)value forKey:(NSString *)defaultName;
    - (void)setDouble:(double)value forKey:(NSString *)defaultName;
    - (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
    - (void)setURL:(nullable NSURL *)url forKey:(NSString *)defaultName API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));
    - (void)registerDefaults:(NSDictionary<NSString *, id> *)registrationDictionary;
    - (void)addSuiteNamed:(NSString *)suiteName;
    - (void)removeSuiteNamed:(NSString *)suiteName;
    - (NSDictionary<NSString *, id> *)dictionaryRepresentation;
    - (NSDictionary<NSString *, id> *)volatileDomainForName:(NSString *)domainName;
    - (void)setVolatileDomain:(NSDictionary<NSString *, id> *)domain forName:(NSString *)domainName;
    - (void)removeVolatileDomainForName:(NSString *)domainName;
    - (NSArray *)persistentDomainNames API_DEPRECATED("Not recommended", macos(10.0,10.9), ios(2.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0));
    - (nullable NSDictionary<NSString *, id> *)persistentDomainForName:(NSString *)domainName;
    - (void)setPersistentDomain:(NSDictionary<NSString *, id> *)domain forName:(NSString *)domainName;
    - (void)removePersistentDomainForName:(NSString *)domainName;
    - (BOOL)synchronize;
    - (BOOL)objectIsForcedForKey:(NSString *)key;
    - (BOOL)objectIsForcedForKey:(NSString *)key inDomain:(NSString *)domain;
    

    相关文章

      网友评论

        本文标题:iOS数据持久化 - NSUserDefaults

        本文链接:https://www.haomeiwen.com/subject/oxdtlktx.html