asihttprequest緩存
『壹』 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,就知道了。