当前位置:首页 » 文件管理 » asihttprequest缓存

asihttprequest缓存

发布时间: 2022-06-23 01:16:43

‘壹’ ios开发数据缓存如何获取服务端最新数据

方法一:一般将服务器第一次返回的数据保存在沙盒里面。这样在手机断网的情况下可以从本地读取数据了。

1.保存到沙盒的代码:

[plain] view
plain

+ (void)saveCache:(int)type andID:(int)_id andString:(NSString *)str;
{
NSUserDefaults * setting = [NSUserDefaults standardUserDefaults];
NSString * key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];
[setting setObject:str forKey:key];
[setting synchronize];
}

2.读取本地沙盒的代码

读取之前首先根据type和Id判断本地是否有

[plain] view
plain

+ (NSString *)getCache:(int)type andID:(int)_id
{
NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
NSString *key = [NSString stringWithFormat:@"detail-%d-%d",type, _id];

NSString *value = [settings objectForKey:key];
return value;
}

如果沙盒里面有数据

[plain] view
plain

NSString *value = [Tool getCache:5 andID:self.QiuTime];
if (value) {
NSDictionary *backdict = [value JSONValue];
if ([backdict objectForKey:@"items"]) {
NSArray *array=[NSArray arrayWithArray:[backdict objectForKey:@"items"]];
for (NSDictionary *qiushi in array) {
QiuShi *qs=[[[QiuShi alloc]initWithDictionary:qiushi] autorelease];
[self.list addObject:qs];
}
}
[self.tableView reloadData];

}

[self.tableView :@"数据全部加载完了.."];
self.tableView.reachedTheEnd = YES;

方法二:使用ASIHTTPRequest和ASIDownloadCache实现本地缓存

1、设置全局的Cache

在AppDelegate.h中添加一个全局变量

[plain] view plain

@interface AppDelegate : UIResponder
{
ASIDownloadCache *myCache;
}
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,retain) ASIDownloadCache *myCache;

在AppDelegate.m中的- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加如下代码

[plain] view plain

//自定义缓存
ASIDownloadCache *cache = [[ASIDownloadCache alloc] init];
self.myCache = cache;
[cache release];

//设置缓存路径
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
[self.myCache setStoragePath:[documentDirectory :@"resource"]];
[self.myCache setDefaultCachePolicy:];

在AppDelegate.m中的dealloc方法中添加如下语句

[plain] view plain

[myCache release];

到这里为止,就完成了全局变量的声明。

2、设置缓存策略

在实现ASIHTTPRequest请求的地方设置request的存储方式,代码如下

[plain] view plain

NSString *str = @"http://....../getPictureNews.aspx";
NSURL *url = [NSURL URLWithString:str];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
//获取全局变量
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
//设置缓存方式
[request setDownloadCache:appDelegate.myCache];
//设置缓存数据存储策略,这里采取的是如果无更新或无法联网就读取缓存数据
[request setCacheStoragePolicy:];
request.delegate = self;
[request startAsynchronous];

3、清理缓存数据

我在这里采用的是手动清理数据的方式,在适当的地方添加如下代码,我将清理缓存放在了应用的设置模块:

[plain] view plain

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
[appDelegate.myCache :];

这里清理的是这种存储策略的缓存数据,如果更换其他的参数的话,即可清理对应存储策略的缓存数据。

‘贰’ ios afnetworking 和asihttprequest的区别

在ios开发中,一般情况下,简单的向某个web站点简单的页面提交请求并获取服务器的响应,用xcode自带的NSURLConnection是能胜任的。但是,在绝大部分下我们所需要访问的web页面则是属于那种受到权限保护的页面,并不是有一个简单的URL可以访问的。这就涉及到了Session和Cookie的处理了,在此时使用NSURLConnection也是能够达到要求的,只是其中处理起来的复杂度和难度就提升了。
为了更好的处理向Web站点的请求,包括处理Session,Cookie等细节问题,使用AFNetworking则是更好的选择,他可以用于发送HTTP请求,接收HTTP的响应,但是不会缓存服务器的响应,不能执行HTML页面中的JAvascript代码,同时,AFNetworking还内置支持JSON,plist文件和XML文件的解析,使用比较方便。
扩展:
1、Session:中文有译作时域的,就是只某个客户端在访问服务器起到停止访问这一段的时间间隔被称为时域。
2、Cookie:由服务器发送给客服端,把Cookie的key:value值储存在本地文件夹下,当下次请求的时候能够直接发送Cookie获得权限验证

‘叁’ 怎么在github上开源ios代码

1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库。它建立在NSURLConnection、NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单,因此,许多iOS应用开发都会使用到它。 支持HTTP请求和基于REST的网络服务(包括GET、POST、PUT、DELETE等); 支持ARC; 要求iOS 5.0及以上版本; 有一些插件扩展已有的功能,还有一个功能齐全的API; 从URL中获取JSON特别简单。 2. Three20 Three20原本是iPhone版Facebook中所使用的工具库,包括照片查看器等一系列的iPhone UI类集,以及HTTP磁盘缓存等一些通用工具。后来从Facebook iPhone应用中剥离出来,成为了一个深受开发者喜爱的通用框架。 3. facebook-ios-sdk 此前在“GitHub上最受欢迎的开源项目”Android系列文章(一)中,我们曾介绍过允许开发者将Facebook集成到Android应用中的Facebook SDK for Android。Facebook SDK for iOS和它一样,可以让开发者将Facebook相关功能集成到自己的iOS App中。 Facebook无疑是最成功的SNS社区,如果能够让App具有与Facebook集成的功能,那势必会带来非常好的效果。Facebook SDK for iOS项目更新频率很高,想要获取更多关于示例、文档、将SDK集成到App中、源代码等信息,可直接登陆Facebook Developers查看。 4. RestKit Restkit是一个主要用于iOS上网络通信的开源Objective-C框架,除了发送请求、接受响应这些基本功能外,还附带Core Data,以及将远程JSON映射为本地对象的功能。 主要特点: 可在iOS和Mac OS X的Objective-C中与RESTful Web服务进行简单交互; 包含简单的HTTP Request/Response API; 带有强大的对象映射系统,用于减少代码长度; RestKit可降低JSON/XML的处理的资源消耗,支持通过SBJSON和YAJL进行JSON解析。 5. asi-http-request ASIHTTPRequest是一款极其强劲的HTTP访问开源项目,能够让简单的API完成非常复杂的功能,比如异步请求、队列请求、GZIP压缩、缓存、断点续传、进度跟踪、上传文件、HTTP认证。 ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。使用Objective-C编写,能够同时用于Mac OS X和iPhone应用中。 6. cocos2d-x 在《GitHub上最火的40个Android开源项目(一)》中,我们已经非常详细地介绍了cocos2d-x开源项目。cocos2d-x支持iOS、Android、Windows Phone 8、Bada、BlackBerry、Marmalade、Windows、Linux等多个平台。 7.cocos2d-iphone(cocos2d) cocos2d for iPhone是一个开源框架,用于为iPod Touch、iPhone、iPad及Mac OS X构建2D游戏、演示程序及其他图形交互式应用。基于cocos2d设计,使用相同的API,但不同于cocos2d使用Python,cocos2d for iPhone是使用Objective-C实现的。 cocos2d for iPhone主要特性: 快 免费 易于使用 社区支持 8.cocos2d-iphone(jpsarda) 该项目是对cocos2d for iPhone的扩展。 9. GPUImage GPUImage是一个基于GPU图像和视频处理的开源iOS框架。 主要功能如下: 提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜; GPUImage顾名思义,是基于GPU的图像加速,因此图像处理速度非常快,并且能够自定义图像滤镜; 支持ARC。 10. MonoGame MonoGame是一个Microsoft XNA 4.x Framework的开源跨平台实现。此前在Android开源项目系列文章(一)中我们也进行了详细的介绍。 MonoGame支持平台: iOS(包括Ritina Display) Android Windows(OpenGL) Mac OS X Linux Windows Store Apps(Windows 8、Windows RT) Windows Phone 8 PlayStation Mobile(目前仅支持2D) OUYA 11. Nimbus Nimbus是一个开源的iOS框架,比起Three20,Nimbus的文档更为全面、丰富,能够实现很多非常炫的界面特效。因此,开发者可以借助Nimbus来降低项目设计的复杂度。 12. cheddar-ios Cheddar是一个简单即时的任务管理器,Cheddar for iOS是Cheddar的iOS客户端,通用于iPhone和iPad。 13. ViewDeck IIViewDeckController能够实现类似于Path 2.0 的视图左右滑动的效果,支持向左或向右顺滑的滑动操作。 14. ShareKit ShareKit是iPhone开发的第三方接口,允许你一键分享文字、图片、网址、文件等内容到Facebook、Twitter、Delicious、Tumblr、Google Reader等第三方网站上。 15. GMGridView GMGridView是一款开源的iOS(iPhone/iPad)表格视图,允许用户手势对表格单元进行排序,在单元格需要展示时才进行装载,这样极大地提高了表格的效率。其中的伸缩/旋转/平移手势能够让用户改变视图,还能够实现从CellView到全屏的切换。 16. QuickDialog QuickDialog可以帮助开发者快速创建复杂的表单,实现包括登录界面在内的各种样式的TableView输入界面,此外,还可以创建带有多个文本域的表格及项目。 17. appirater Appirater是一个可以直接使用到任何iPhone应用(iOS4.0及以上)中的开源类,用于提醒用户在打开App时,对应用进行或打分。 18. SVProgressHUD SVProgressHUD能够实现多种HUD效果,多用于程序正在执行耗时较长的任务,需要用户等待。除了显示等待的HUD,还可以显示命令执行成功或者失败的HUD。 19. Reader 该项目能够让iOS开发者轻而易举地在iOS设备屏幕上显示PDF文件。代码通用,不需要任何XIB(因为所有UI元素都是代码生成的,具有极大的灵活性),运行于iOS 4.0及其以上版本设备中,同时还支持所有Retina Display设备。 支持: 诸如iBooks等的文档导航; 设备全方位旋转; 对PDF进行加密(密码保护); PDF链接(URI及跳转页面); PDF旋转页面。 20.CocoaAsyncSocket CocoaAsyncSocket提供了十分强大而又易用的Mac OS X及iOS异步套接库,支持TCP和UDP,其中,AsyncSocket类是支持TCP的,AsyncUdpSocket是支持UDP的。 AsyncSocket是封装了CFSocket和CFSteam的TCP/IP socket网络库,提供异步操作。AsyncUdpSocket是UDP/IP socket网络库,包装自CFSocket。

‘肆’ ASIHTTPRequest比NSURLConnection多了哪些东西

这个不是一时半会说完的,大部分人也不会关心有啥区别,只是用着习惯而已。正规项目都会统一编写接口的。asihttprequest肯定要强大一些,建议看看api,就知道了。

热点内容
python虚拟环境开发 发布:2025-01-17 04:04:34 浏览:690
编译运行后保存exe文件 发布:2025-01-17 04:00:18 浏览:565
asm源码编译 发布:2025-01-17 03:54:24 浏览:287
如何配置svi接口的ip地址 发布:2025-01-17 03:48:09 浏览:44
微软怎么解压缩文件 发布:2025-01-17 03:43:06 浏览:204
有没有手机可以用的java编译器 发布:2025-01-17 03:38:56 浏览:542
手把手教你学c语言版 发布:2025-01-17 03:38:52 浏览:781
最优化遗传算法 发布:2025-01-17 03:35:24 浏览:547
四代飞度家用需要加装哪些配置 发布:2025-01-17 03:34:28 浏览:877
安卓手机猫和老鼠怎么换号 发布:2025-01-17 03:23:58 浏览:470