BDPDiskKV.h 4.82 KB
//
//  BDPDiskKV.h
//  BDPKV
//
//  Created by performance for gaobingnan on 2021/3/1.
//
/*
    BDPDiskKV *diskKV = [[BDPDiskKV alloc] initKVWithID:@"uniqueId"];
        
    [diskKV setBool:YES forKey:@"bool"];
    BOOL bValue = [diskKV getBoolForKey:@"bool"];
        
    [diskKV setInt64:-1024 forKey:@"int64"];
    int64_t iValue = [diskKV getInt64ForKey:@"int64"];
        
    [diskKV setString:@"hello" forKey:@"string"];
    NSString *str = [diskKV getStringForKey:@"string"];
*/

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface BDPDiskKV : NSObject

/// 初始化diskkv
/// @param mmapID 唯一ID (com.baidu.cocoasettings, etc)
- (nullable instancetype)initKVWithID:(NSString *)mmapID;

/// 初始化diskkv
/// @param mmapID 唯一ID (com.baidu.cocoasettings, etc)
/// @param rootPath 指定路径
- (nullable instancetype)initKVWithID:(NSString *)mmapID rootPath:(nullable NSString *)rootPath;


/// setxxx
/// @param object value(NSObject)
/// @param key NSString类型key
- (BOOL)setObject:(nullable NSObject<NSCoding> *)object forKey:(NSString *)key;

/// setxxx
/// @param object value(id)
/// @param key NSString类型key
/// @param key Class
- (BOOL)setObject:(nullable id)object forKey:(NSString *)key cls:(Class)cls;

/// setxxx
/// @param value value(BOOL)
/// @param key NSString类型key
- (BOOL)setBool:(BOOL)value forKey:(NSString *)key;

/// setxxx
/// @param value value(NSNumber)
/// @param key NSString类型key
- (BOOL)setNumber:(NSNumber *)value forKey:(NSString *)key;

/// setxxx
/// @param value value(NSString)
/// @param key NSString类型key
- (BOOL)setString:(NSString *)value forKey:(NSString *)key;

/// setxxx
/// @param value value(NSDate)
/// @param key NSString类型key
- (BOOL)setDate:(NSDate *)value forKey:(NSString *)key;

/// setxxx
/// @param value value(NSData)
/// @param key NSString类型key
- (BOOL)setData:(NSData *)value forKey:(NSString *)key;

- (BOOL)setInt64:(int64_t)value forKey:(NSString *)key;

- (BOOL)setUInt64:(uint64_t)value forKey:(NSString *)key;

- (BOOL)setFloat:(float)value forKey:(NSString *)key;

- (BOOL)setDouble:(double)value forKey:(NSString *)key;

/// getxxx
/// @param key NSString类型key
- (nullable id)getObjectOfClass:(Class)cls forKey:(NSString *)key;

- (BOOL)getBoolForKey:(NSString *)key;
- (BOOL)getBoolForKey:(NSString *)key defaultValue:(BOOL)defaultValue;

- (int64_t)getInt64ForKey:(NSString *)key;
- (int64_t)getInt64ForKey:(NSString *)key defaultValue:(int64_t)defaultValue;

- (uint64_t)getUInt64ForKey:(NSString *)key;
- (uint64_t)getUInt64ForKey:(NSString *)key defaultValue:(uint64_t)defaultValue;

- (float)getFloatForKey:(NSString *)key;
- (float)getFloatForKey:(NSString *)key defaultValue:(float)defaultValue;

- (double)getDoubleForKey:(NSString *)key;
- (double)getDoubleForKey:(NSString *)key defaultValue:(double)defaultValue;

- (nullable NSNumber *)getNumberForKey:(NSString *)key;

- (nullable NSString *)getStringForKey:(NSString *)key;
- (nullable NSString *)getStringForKey:(NSString *)key defaultValue:(nullable NSString *)defaultValue;

- (nullable NSDate *)getDateForKey:(NSString *)key;
- (nullable NSDate *)getDateForKey:(NSString *)key defaultValue:(nullable NSDate *)defaultValue;

- (nullable NSData *)getDataForKey:(NSString *)key;
- (nullable NSData *)getDataForKey:(NSString *)key defaultValue:(nullable NSData *)defaultValue;


/// 是否包含指定key
/// @param key key NSString类型key
- (BOOL)containsKey:(NSString *)key NS_SWIFT_NAME(contains(key:));

/// 获取kv中数据个数
- (size_t)count;

/// 获取kv中数据总大小(文件大小)
- (size_t)totalSize;

/// 获取kv中数据实际大小(文件中数据大小)
- (size_t)actualSize;

/// 遍历所有key,每次遍历到Key时,都执行传入的Block
/// @param block 封装Block
- (void)enumerateKeys:(void (^)(NSString *key, BOOL *stop))block;

/// 获取所有keys
- (NSArray *)allKeys;

/// 删除指定key对应的数据
/// @param key NSString类型key
- (void)removeValueForKey:(NSString *)key;

/// 删除指定keys数组对应的数据
/// @param arrKeys (NSArray<NSString *> *)
- (void)removeValuesForKeys:(NSArray<NSString *> *)arrKeys;

/// 清除所有数据
- (void)clearAll;

// MMKV's size won't reduce after deleting key-values
// call this method after lots of deleting if you care about disk usage
// note that `clearAll` has the similar effect of `trim`
- (void)trim;

// call this method if the instance is no longer needed in the near future
// any subsequent call to the instance is undefined behavior
- (void)close;

// call this method if you are facing memory-warning
// any subsequent call to the instance will load all key-values from file again
- (void)clearMemoryCache;

// Migrate NSUserDefault data to MMKV
// return imported count of key-values
- (uint32_t)migrateFromUserDefaults:(NSUserDefaults *)userDaults;


@end

NS_ASSUME_NONNULL_END