测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可 | MIT |
发布最后发布 | 2015年2月 |
由 Alexey Belkevich 维护。
依赖 | |
APAsyncDictionary | = 0.0.6 |
MD5Digest | = 0.1.0 |
APSmartStorage 帮助从网络获取数据,并以智能可配置的方式自动在磁盘或内存中缓存数据。以下是 APSmartStorage 流程图的样式:
将 APSmartStorage
pod 添加到 Podfile
以下是如何使用 APSmartStorage
存储图片的示例
// setup data parsing block
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url)
{
return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale];
};
...
// show some progress/activity
...
// load object with URL
[APSmartStorage.sharedInstance loadObjectWithURL:imageURL completion:^(id object, NSError *error)
{
// hide progress/activity
if (error)
{
// show error
}
else
{
// do something with object
}
}];
通常您不需要将下载的对象存储在内存中。例如,您执行一些未来的后台下载,但您现在不想在内存中保留这些对象。
[APSmartStorage.sharedInstance loadObjectWithURL:someURL storeInMemory:NO completion:^(id object, NSError *error)
{
// do something
}];
但是,如果任何方法调用设置 storeInMemory:YES
对象将被存储在内存中
[APSmartStorage.sharedInstance loadObjectWithURL:someURL storeInMemory:NO progress:^(NSUInteger percents)
{
// show progress percents value is between 0 and 100
} completion:^(id object, NSError *error)
{
// do something
}];
存储在文件中的对象可能在一段时间后变得过时,应用应该从网络重新加载它
[APSmartStorage.sharedInstance reloadObjectWithURL:objectURL completion:(id object, NSError *error)
{
if (error)
{
// show error and do something like use outdated version of object
}
else
{
// do something with object
}
}];
// remove object from memory
[APSmartStorage.sharedInstance removeObjectWithURLFromMemory:objectURL];
// remove all objects form memory
[APSmartStorage.sharedInstance removeAllFromMemory];
// remove object from memory and remove it file
[APSmartStorage.sharedInstance removeObjectWithURLFromStorage:objectURL];
// remove all objects from memory and all storage files
[APSmartStorage.sharedInstance removeAllFromStorage];
此方法也会取消网络请求。如果请求已被取消,回调将使用
nil
作为object
执行,并带有代码701的错误。
如果parsingBlock
没有设置,您将收到从网络下载的原始NSData
或从文件读入的数据。所以大多数情况下您都应该设置一个。如果需要解析不同格式的数据,将会稍微复杂一些。
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url)
{
// is URL of image
if ([url isImageURL])
{
return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale];
}
// this is URL of something else
else
{
return [SomeObject objectWithData:data];
}
};
如果达到最大对象数量,则在添加下一个对象之前,会随机从内存中移除一个对象。
APSmartStorage.sharedInstance.maxObjectCount = 10;
NSURLSessionConfiguration
APSmartStorage.sharedInstance.sessionConfiguration = sessionConfiguration;
版本 0.1.3
版本 0.1.2
版本 0.1.1
版本 0.1.0
版本 0.0.7
版本 0.0.6
版本 0.0.5
如果您有任何改进或关注的问题,请随时提交一个问题并写下详细信息。