日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MMKV_MMKV使用教程

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MMKV_MMKV使用教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要是提供MMKV的代碼使用教程,若是想知道更多關于MMKV的信息,能夠點擊如下連接,查看更多信息:html

2.?MMKV淺析github

MMKV實際使用的代碼案例以下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

[MMKV setLogLevel:MMKVLogNone];//關閉MMKV控制臺打印的自帶的輔助日志信息

[self kvCreateMethod];//建立MMKV的方法

[self compareMMKVWithNSUesrDefault];//比較MMKV和NSUserDefaults存儲數據的效率

[self cLanguageDataType];//存儲和讀取C語言數據類型

[self ocLanguageDataType];//存儲和讀取OC語言數據類型

[self kvMigrateFromUserDefaults];//從NSUserDefaults遷移數據到MMKV

// [[MMKV defaultMMKV] clearAll];

//totalSize:文件分配的總磁盤空間4k;actualSize:存儲文件占據的實際存儲空間298byte

NSLog(@"count:%zu-----totalSize:%zu------actualSize:%zu-----allKeys:%@",[[MMKV defaultMMKV] count],

[[MMKV defaultMMKV] totalSize],[[MMKV defaultMMKV] actualSize],[[MMKV defaultMMKV] allKeys]);

//打印結果:count:7-----totalSize:4096------actualSize:298-----allKeys:(double,uint64,uint32,int32,bool,int64,float)

return YES;

}復制代碼

建立MMKV的方法:ide

/*

//如下四種建立方法是徹底等價的,建立的是同一個MMKV實例

*/

- (void)kvCreateMethod

{

//MMKV文件存儲的默認為~/Documents/mmkv

NSString *basePath = [MMKV mmkvBasePath];

//修改文件存儲的默認路徑,在建立MMKV實例以前設置

[MMKV setMMKVBasePath:@""];

//第一種建立方法

MMKV *defaultKV1 = [MMKV defaultMMKV];

//第二種建立方法

MMKV *defaultKV3 = [MMKV mmkvWithID:@"mmkv.default"];

//第三種建立方法

NSString *string = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

string = [string stringByAppendingPathComponent:@"mmkv"];

MMKV *defaultKV4 = [MMKV mmkvWithID:@"mmkv.default" relativePath:string];

//第四種建立方法

MMKV *defaultKV2 = [MMKV mmkvWithID:@"mmkv.default" cryptKey:nil relativePath:string];

}復制代碼

比較MMKV和NSUserDefaults存儲數據的效率:

ui

/*

寫入10萬個數據所用的時間

MMKV : 198.487043ms

NSUserDefaults : 13829.244971ms

*/

- (void)compareMMKVWithNSUesrDefault

{

CFAbsoluteTime startTime =CFAbsoluteTimeGetCurrent();

MMKV *customKV = [MMKV mmkvWithID:@"cn.meicai"];

for (int i=0; i<100000; i++) {

[customKV setInt32:i forKey:@"int32"];

}

CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime);

NSLog(@"Linked in %f ms", linkTime *1000.0);

NSLog(@"------%d--------",[customKV getInt32ForKey:@"int32"]);

// CFAbsoluteTime startTime =CFAbsoluteTimeGetCurrent();

// NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

// for (int i=0; i<100000; i++) {

// [userDefault setInteger:i forKey:@"int32"];

// }

// CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime);

// NSLog(@"Linked in %f ms", linkTime *1000.0);

// NSLog(@"------%ld--------",(long)[userDefault integerForKey:@"int32"]);

}

復制代碼

存儲和讀取C語言數據類型:

加密

/*

//支持如下 C 語語言基礎類型:

//bool、int3二、int6四、uint3二、uint6四、float、double

*/

- (void)cLanguageDataType

{

MMKV *mmkv = [MMKV defaultMMKV];

[mmkv setBool:YES forKey:@"bool"];

NSLog(@"bool:%d", [mmkv getBoolForKey:@"bool"]);//打印結果:bool:1

[mmkv setInt32:-1024 forKey:@"int32"];

NSLog(@"int32:%d", [mmkv getInt32ForKey:@"int32"]);//打印結果:int32:-1024

[mmkv setUInt32:std::numeric_limits::max() forKey:@"uint32"];

NSLog(@"uint32:%u", [mmkv getUInt32ForKey:@"uint32"]);//打印結果:uint32:4294967295

[mmkv setInt64:std::numeric_limits::min() forKey:@"int64"];

NSLog(@"int64:%lld", [mmkv getInt64ForKey:@"int64"]);//打印結果:int64:-9223372036854775808

[mmkv setUInt64:std::numeric_limits::max() forKey:@"uint64"];

NSLog(@"uint64:%llu", [mmkv getInt64ForKey:@"uint64"]);//打印結果:uint64:18446744073709551615

[mmkv setFloat:-3.1415926 forKey:@"float"];

NSLog(@"float:%f", [mmkv getFloatForKey:@"float"]);//打印結果:float:-3.141593

[mmkv setDouble:std::numeric_limits::max() forKey:@"double"];

NSLog(@"double:%f", [mmkv getDoubleForKey:@"double"]);//打印結果:double:17976931348......24858368.000000

}復制代碼

存儲和讀取OC語言數據類型:

spa

/*

支持如下 ObjC 類型:

NSString、NSData、NSDate

*/

- (void)ocLanguageDataType

{

//cryptKey 根據此秘鑰建立AES加密器,加密后的數據存取方法不變,和未加密的同樣

MMKV *mmkv = [MMKV mmkvWithID:@"cn.meicai" cryptKey:[@"crypt" dataUsingEncoding:NSUTF8StringEncoding]];

[mmkv setString:@"hello, mmkv" forKey:@"string"];

NSLog(@"string:%@ defaultValue:%@", [mmkv getStringForKey:@"string"],[mmkv getStringForKey:@"string111" defaultValue:@"mmmmmmmmmmmmmmmm"]);

//打印結果:string:hello, mmkv defaultValue:mmmmmmmmmmmmmmmm

[mmkv setObject:nil forKey:@"string"];

NSLog(@"string after set nil:%@, containsKey:%d",

[mmkv getObjectOfClass:NSString.class

forKey:@"string"],

[mmkv containsKey:@"string"]);

//打印結果:string after set nil:(null), containsKey:0

[mmkv setDate:[NSDate date] forKey:@"date"];

NSLog(@"date:%@ defaultValue:%@", [mmkv getDateForKey:@"date"],[mmkv getDateForKey:@"date111" defaultValue:[NSDate date]]);

//打印結果:date:Wed Jun 26 14:39:52 2019 defaultValue:Wed Jun 26 14:39:52 2019

[mmkv setData:[@"hello, mmkv again and again" dataUsingEncoding:NSUTF8StringEncoding] forKey:@"data"];

NSData *data = [mmkv getDataForKey:@"data"];

NSLog(@"data:%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

//打印結果:data:hello, mmkv again and again

}復制代碼

從NSUserDefaults遷移數據到MMKV:

/*

從NSUserDefault遷移數據到MMKV的實例

*/

- (void)kvMigrateFromUserDefaults

{

[[NSUserDefaults standardUserDefaults] setObject:@"hello world" forKey:@"string"];

[[NSUserDefaults standardUserDefaults] synchronize];

MMKV *userDefaultKV = [MMKV mmkvWithID:@"NSUserDefault"];

[userDefaultKV migrateFromUserDefaults:[NSUserDefaults standardUserDefaults]];

[userDefaultKV enumerateKeys:^(NSString * _Nonnull key, BOOL * _Nonnull stop) {

if ([key isEqualToString:@"string"]) {

NSLog(@"string value is : %@",[userDefaultKV getStringForKey:key]);//打印結果:string value is : hello world

NSLog(@"string value is : %@",[userDefaultKV getObjectOfClass:[NSString class] forKey:key]);//打印結果:string value is : hello world

NSLog(@"string value is : %@",[userDefaultKV getObjectOfClass:[NSNumber class] forKey:key]);//打印結果:string value is : (null)

*stop = YES;

}

}];

}復制代碼

總結

以上是生活随笔為你收集整理的MMKV_MMKV使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。