FireflyKV 使用指南

初始化

支持普通自帶加密自定義加密三種方式初始化。

普通

FireflyKV *fireflyKV = [FireflyKV fireflyKVWithPath:demoPath];

或者

FireflyKV *fireflyKV = [FireflyKV fireflyKVWithPath:demoPath KeyData:nil fireflyKVType:FireflyKVTypeNone];

KV 支持的(de)加密方式

目前僅支持 ChaCha20 加密存儲,後續會擴展加密方式。

NSData *keyData = [@"ceshi" dataUsingEncoding:NSUTF8StringEncoding];
FireflyKV *fireflyKV = [FireflyKV fireflyKVWithPath:demoPath KeyData:keyData fireflyKVType:FireflyKVTypeChaCha20];

自定義加密

需要(yào / yāo)遵守協議 FireflyKVEncryptDelegate 并實現代理 encrypeDelegate。在(zài)代理方法中進行加密或者解密,并返回處理後的(de) NSData 類型的(de)值。

FireflyKV *fireflyKV = [FireflyKV fireflyKVWithPath:demoPath KeyData:nil fireflyKVType:FireflyKVTypeCustom];
fireflyKV.encrypeDelegate = self;

遵守 FireflyKVEncryptDelegate 需要(yào / yāo)實現的(de)代理方法:

- (NSData *_Nullable)fireflyKV_customEncryptData:(NSData *_Nullable)valueData
{
    NSData *key = [@"12345678876543211234567887654321" dataUsingEncoding:NSUTF8StringEncoding];
    NSData * iv = [@"1234567887654321" dataUsingEncoding:NSUTF8StringEncoding];
    id<FireflySymmetryCryptoInterface> cipher = [FireflySymmetryCryptoHelper getImplementationWithType:FireflySymmetryCrypto_AES];
    NSData *encData = [cipher encryptData:valueData Key:key ivector:iv mode:FireflySymmetryCryptoMode_CBC padding:FireflySymmetryCryptoPadding_PKCS7 error:nil];
    return encData;
}

- (NSData *_Nullable)fireflyKV_customDecodeData:(NSData *_Nullable)valueData
{
    NSData *key = [@"12345678876543211234567887654321" dataUsingEncoding:NSUTF8StringEncoding];
    NSData * iv = [@"1234567887654321" dataUsingEncoding:NSUTF8StringEncoding];
    id<FireflySymmetryCryptoInterface> cipher = [FireflySymmetryCryptoHelper getImplementationWithType:FireflySymmetryCrypto_AES];
    NSData *decData = [cipher decryptData:valueData Key:key ivector:iv mode:FireflySymmetryCryptoMode_CBC padding:FireflySymmetryCryptoPadding_PKCS7 error:nil];
    return decData;
}

當在(zài)一(yī / yì /yí)個(gè)程序中,多次使用同一(yī / yì /yí)個(gè) KV 存儲庫路徑和(hé / huò)同種類型創建 FirelfyKV,會返回同一(yī / yì /yí)個(gè) FireflyKV 對象。

API 基本使用

存儲和(hé / huò)取值

支持的(de)數據類型:NSStringBOOlint16_tuint16_tint32_tuint32_tint64_tuint64_tfloatdoubledata

每個(gè)存儲方法有普通的(de)設置方法還有對應的(de)可傳默認值的(de) API,當查不(bù)到(dào)值時(shí),将默認值返回。

字符串

/*字符串值取值*/
NSString *keyString = @"FireflyKV_testString";
BOOL resultString = [fireflyKV setString:@"Hello world!" forKey:keyString];
if (resultString) {
    NSLog(@"key:%@ value:%@ 存儲成功",keyString,@"Hello world");
}else
{
    NSLog(@"key:%@ value:%@ 存儲失敗",keyString,@"Hello world");
}

/*字符串值取值*/
NSString *valueString = [fireflyKV getStringForKey:keyString];
if (valueString) {
    NSLog(@"value 爲(wéi / wèi) %@",valueString);
}else
{
    NSLog(@"value 爲(wéi / wèi) %@",valueString); 
}

字符串值可以(yǐ)爲(wéi / wèi)空,如果 KV 存儲庫中有 key 對應的(de) value,則會從 KV 存儲庫中移除對應 key 的(de)值。

BOOL 值

/*BOOL 值存儲*/
NSString *keyBool = @"FireflyKV_testBool";
BOOL resultBool = [fireflyKV setBool:YES forKey:keyBool];
if (resultBool) {
    NSLog(@"key:%@ value:YES 存儲成功",keyBool);
}else
{
  NSLog(@"key:%@ value:YES 存儲失敗",keyBool);
}

/*BOOL 值取值*/
BOOL valueBool = [fireflyKV getBoolForKey:keyBool];
if (valueBool) {
    NSLog(@"value 爲(wéi / wèi) YES");
}else
{
   NSLog(@"value 爲(wéi / wèi) NO");
}

int 值

包含 int16_tuint16_tint32_tuint32_tint64_tuint64_t。示例代碼如下,包含 int16_tuint16_t 兩種。int32_tuint32_tint64_tuint64_t 類似。

/*int16_t 值存儲*/
NSString *keyInt16_t = @"FireflyKV_testInt16_t";
BOOL resultInt16_t = [fireflyKV setInt16:12 forKey:keyInt16_t];
if (resultInt16_t) {
    NSLog(@"key:%@ value:%d 存儲成功",keyInt16_t,12);    
}else
{ 
    NSLog(@"key:%@ value:%d 存儲失敗",keyInt16_t,12); 
}

/*int16_t 值取值*/
int16_t valueInt16_t = [fireflyKV getInt16ForKey:keyInt16_t];
NSLog(@"valueInt16_t 爲(wéi / wèi) %d",valueInt16_t);


/*uint16_t 值存儲*/
NSString *keyUInt16_t = @"FireflyKV_testUInt16_t";
BOOL resultUInt16_t = [fireflyKV setUInt16:12 forKey:keyUInt16_t];
if (resultUInt16_t) {
    NSLog(@"key:%@ value:%d 存儲成功",keyUInt16_t,12);
}else    
{ 
    NSLog(@"key:%@ value:%d 存儲失敗",keyUInt16_t,12); 
}

/*uint16_t 值取值*/
uint16_t valueUInt16_t = [fireflyKV getUInt16ForKey:keyUInt16_t];
NSLog(@"valueUInt16_t 爲(wéi / wèi) %d",valueUInt16_t);

double 值

/*double 值存儲*/
NSString *keyDouble = @"FireflyKV_testDouble";
BOOL resultDouble = [fireflyKV setDouble:1.52 forKey:keyDouble];
if (resultDouble) {
    NSLog(@"key:%@ value:%f 存儲成功",keyDouble,1.52);
}else
{ 
    NSLog(@"key:%@ value:%f 存儲失敗",keyDouble,1.52); 
}

/*double 值取值*/
double valueDouble = [fireflyKV getDoubleForKey:keyDouble];
NSLog(@"valueDouble 爲(wéi / wèi) %f",valueDouble);

float 值

/*float 值存儲*/
NSString *keyFloat = @"FireflyKV_testFloat";
BOOL resultFloat = [fireflyKV setFloat:1.5 forKey:keyFloat];
if (resultFloat) {
    NSLog(@"key:%@ value:%f 存儲成功",keyFloat,1.5);
}else
{ 
    NSLog(@"key:%@ value:%f 存儲失敗",keyFloat,1.5); 
}

/*float 值取值*/
float valueFloat = [fireflyKV getFloatForKey:keyFloat];
NSLog(@"valueFloat 爲(wéi / wèi) %f",valueFloat);

NSData

/*NSData 值存儲*/
NSString *keyData = @"FireflyKV_testData";
NSData *dataValue = [@"你好" dataUsingEncoding:NSUTF8StringEncoding];
BOOL resultData = [fireflyKV setData:dataValue forKey:keyData];
if (resultData) {
    NSLog(@"key:%@ value:%@ 存儲成功",keyData,strData);
}else
{ 
    NSLog(@"key:%@ value:%@ 存儲失敗",keyData,strData); 
}

/*NSData 值取值*/
NSData *valueData = [fireflyKV getDataForKey:keyData];
NSString *valueResult = [[NSString alloc] initWithData:valueData encoding:NSUTF8StringEncoding];
NSLog(@"valueData 爲(wéi / wèi) %@",valueResult);

NSData 值可以(yǐ)爲(wéi / wèi)空,如果 KV 存儲庫中有 key 對應的(de) value,則會從 KV 存儲庫中移除對應 key 的(de)值。

删除

移除 KV 庫中的(de)爲(wéi / wèi) key 的(de)數據。

BOOL result = [fireflyKV removeValueForKey:key];

其它使用

是(shì)否包含 key

查看 KV 存儲庫中是(shì)否存儲的(de)有 key 對應的(de)值。

[fireflyKV containsKey:key]

清空 KV 庫數據

清空數據,但還可以(yǐ)繼續增删改查。

[fireflyKV clearAll];

删除 KV 存儲庫

将 KV 存儲庫對應文件删除,無法繼續增删改查。

BOOL result = [fireflyKV deleteKVDB];

移除内存中 存儲的(de) KV 對象

從内存中,移除 path 對應的(de) KV 對象。

[fireflyKV close];
下一(yī / yì /yí)步:

API 參考

性能對比

Copyright © 屯昌單支科技有限公司 2019 all right reserved,powered by Gitbook聯系方式: wanglihang@mskj.com
修訂時(shí)間: 2019-09-03 17:48:17

results matching ""

    No results matching ""