JMCache 0.1

JMCache 0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布日期上次发布2014年12月

Jérôme Morissard维护。



  • Morissard Jérome

JMCache是一个基于GCD持久化临时对象的键/值存储。它由一个缓存磁盘和一个内存缓存(JMCacheMemory)组成。

JMCache很酷,因为它:

  • 可以存储不遵守NSCoding协议的对象,您可以实现JMcoding协议或使用FastCoding实现
  • 您可以配置缓存为"内存优先到磁盘","仅内存","仅磁盘",
  • 您可以使用ValueTransformer来提高您编码对象的安全性,您可以将其压缩,使用您自己的算法对其进行加密。

缓存参数

缓存路径类型 -> 自动路径到保存目录

typedef NS_ENUM(NSUInteger, JMCacheType) {
    JMCacheTypePublic,
    JMCacheTypePrivate,
    JMCacheTypeOffline
};

缓存类型 -> 内存,磁盘

typedef NS_OPTIONS(NSUInteger, JMCacheType) {
    JMCacheTypeInMemory = 1,
    JMCacheTypeOnDisk   = 1 << 1,
    JMCacheTypeInMemoryThenOnDisk   = (JMCacheTypeInMemory | JMCacheTypeOnDisk)
};

ValueTransformer

您可以编写自己的valueTransformer以提高您编码数据的安全性。例如,请参阅JMCacheReverseDataValueTransformer类的简化实现。

@property (strong, nonatomic) JMCacheValueTransformer *valueTransformer;

API

// Async API
- (void)objectForKey:(NSString *)key withCompletionBlock:(JMCacheCompletionBlockObjectError)block;
- (void)setObject:(NSObject *)obj forKey:(NSString *)key withCompletionBlock:(JMCacheCompletionBlockBoolError)block;
- (void)removeObjectForKey:(NSString *)key withCompletionBlock:(JMCacheCompletionBlockBoolError)block;
- (void)clearCacheWithCompletionBlock:(JMCacheCompletionBlockBool)block;

// Sync API
- (id)objectForKey:(NSString *)key;
- (BOOL)setObject:(NSObject *)obj forKey:(NSString *)key;
- (NSInteger)numberOfCachedObjects;