美文网首页ios
玩一玩MMKV存储利器(iOS篇)

玩一玩MMKV存储利器(iOS篇)

作者: 邓立_全栈UncleLi | 来源:发表于2021-05-27 11:29 被阅读0次

    使用原因:Android SharedPreferences多线程取值失效,有位熊兄弟推荐使用香飘飘MMKV存储利器,不香赔钱。然而我抱着赔钱的心态玩了一下,真香!!

    MMKV优势

    • 使用零拷贝技术之一mmap内存映射的key-value组件,用户空间可以共享内核空间的数据,减少内核空间到用户空间的拷贝次数
    • 采用性能最佳的protobuf协议
    • 稳定,最先使用在iOS中,后续Android也可以使用这真香利器
    • 性能比NSUserDefaults香多了


      真香性能

    那就开始玩耍吧~~~

    通过CocoaPods安装

    • Podfile文件,添加 pod 'MMKV'
    • 头文件添加#import <MMKV/MMKV.h>

    初始化

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [MMKV initializeMMKV:nil];
        return YES;
    }
    

    真香使用

    // 创建默认实例
    MMKV *mmkv = [MMKV defaultMMKV];
    
    // 创建自定义的实例 
    MMKV *mmkv2 = [MMKV mmkvWithID:@"test"];
    
    // set 布尔值
    [mmkv setBool:YES forKey:@"bool"];
    // get 布尔值
    [mmkv getBoolForKey:@"bool"];
        
    // set值 32位整形
    [mmkv setInt32:-1024 forKey:@"int32"];
    // get值 32位整形
    [mmkv getInt32ForKey:@"int32"];
    
    // set值 32位无符号整形
    [mmkv setUInt32:std::numeric_limits<uint32_t>::max() forKey:@"uint32"];
    // get值 32位无符号整形
    [mmkv getUInt32ForKey:@"uint32"];
    
    // set值 64位整形
    [mmkv setInt64:std::numeric_limits<int64_t>::min() forKey:@"int64"];
    // get值 64位整形
    [mmkv getInt64ForKey:@"int64"];
    
    // set值 64位无符号整形
    [mmkv setUInt64:std::numeric_limits<uint64_t>::max() forKey:@"uint64"];
    // get值 64位无符号整形
    [mmkv getInt64ForKey:@"uint64"];
    
    // set值 字符串
    [mmkv setString:@"hello, mmkv" forKey:@"string"];
    // get值 字符串
    [mmkv getStringForKey:@"string"];
    
    // set值 float
    [mmkv setFloat:30.0 forKey:@"float"];
    // get值 float
    [mmkv getFloatForKey:@"float"];
    
    // set值 double
    [mmkv setDouble:std::numeric_limits<double>::max() forKey:@"double"];
    // get值 double
    [mmkv getDoubleForKey:@"double"];
    
    // set值 object
    [mmkv setObject:nil forKey:@"string"];
    // get值 object
    [mmkv getObjectOfClass:NSString.class forKey:@"string"];
    
    // set值 date
    [mmkv setDate:[NSDate date] forKey:@"date"];
    // get值 date
    [mmkv getDateForKey:@"date"];
    
    // 获取所有keys
    [mmkv allKeys];
    
    // 获取总数
    mmkv.totalSize;
    
    // 是否存在key
    [mmkv containsKey:@"string"];
    
    // 删除单个
    [mmkv removeValueForKey:@"test"];
    
    // 删除多个
    [mmkv removeValuesForKeys:@[@"test1", @"test2"]];
    
    // 删除缓存,不删除磁盘文件
    [mmkv clearMemoryCache];
    
    // 删除所有键值,删除磁盘文件
    [mmkv close];
    

    Android 篇请跳转此地址:https://www.jianshu.com/p/cb2016566504

    相关文章

      网友评论

        本文标题:玩一玩MMKV存储利器(iOS篇)

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