日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS常用代码总结 - 第三方库部分

發布時間:2025/4/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS常用代码总结 - 第三方库部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 SBJson的使用


JSON是一種數據交換語言,和XML是同樣用途的。不過JSON的體積要比XML小,也就意味著在網絡傳輸中
速度會比XML更快。
這里可以看到更多關于json的資料:http://www.json.org/json-zh.html
其實說白了 JSON無非就是一種字符串的結構。。。 那么在IPHONE開發中,使用最多的JSON解析庫就是?
SBJson。。
在這里可以得到 SBJson:http://stig.github.com/json-framework/
3.1版本及以上,它將支持ARC。下載下來后,解壓縮,然后把Class目錄下的所有文件導入項目中。

在使用SBJson時候,

<pre name="code" class="objc">#import "SBJson.h" NSString *jsonStr = @"{\"name\":\"jia\",\"age\":\"24\"}"; NSString *jsonStr2 = @"[\"1\",\"2\"]"; SBJsonParser *jsonParser = [[SBJsonParser alloc] init]; NSMutableDictionary *dict = [jsonParser objectWithString:jsonStr]; NSLog(@"%@",dict); NSMutableArray *arr = [jsonParser objectWithString:jsonStr2]; NSLog(@"%@",arr); [jsonParser release];

2 MWPhotoBrowser使用


https://github.com/mwaterfall/MWPhotoBrowser
一個可選的網格視圖簡單的iOS照片瀏覽器,標題和選擇。
mwphotobrowser可以通過提供uiimage對象顯示一個或多個圖像,或URL的Web圖像文件,或圖書館資產。

照片處理下載和緩存瀏覽器從Web照片無縫。照片可以放大和平移,和可選的標題可以顯示(可定制)。
瀏覽器也可以用于允許用戶選擇一個或更多的照片可以使用網格或主視圖。

mwphotobrowser的設計是一個導航控制器內。只需設置代表(必須符合mwphotobrowserdelegate)和實
施所需的2代表方法提供的圖片瀏覽器在mwphoto對象形式的數據。你可以通過提供一個uiimage對象創建
一個mwphoto對象,或包含一個文件的路徑,在線圖片或從資產庫資產。
mwphoto對象句柄緩存,文件管理,下載網頁圖片,和你不同的優化。如果你想用你自己的數據模型來表
示的照片你可以確保你的模型符合mwphoto協議。然后你可以處理的管理緩存,下載,等等,你自己。更
多這方面的資料,可以發現在mwphotoprotocol。H。
看下面的代碼片斷的一個例子,如何實現圖片瀏覽器。也有在項目的一個簡單的演示程序。

- (void)viewDidLoad {[super viewDidLoad];// BrowserNSMutableArray *photos = [[NSMutableArray alloc] init];NSMutableArray *thumbs = [[NSMutableArray alloc] init];MWPhoto *photo;BOOL displayActionButton = NO;BOOL displaySelectionButtons = NO;BOOL displayNavArrows = NO;BOOL enableGrid = YES;BOOL startOnGrid = NO;// Photosphoto = [MWPhoto photoWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"photo5" ofType:@"jpg"]]];photo.caption = @"Fireworks";[photos addObject:photo];photo = [MWPhoto photoWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"photo2" ofType:@"jpg"]]];photo.caption = @"The London Eye is a giant Ferris wheel situated on the banks of the River Thames, in London, England.";[photos addObject:photo];photo = [MWPhoto photoWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"photo3" ofType:@"jpg"]]];photo.caption = @"York Floods";[photos addObject:photo];photo = [MWPhoto photoWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"photo4" ofType:@"jpg"]]];photo.caption = @"Campervan";[photos addObject:photo];// Options self.photos = photos;self.thumbs = thumbs;//// Create browserMWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];browser.displayActionButton = displayActionButton;//分享按鈕,默認是browser.displayNavArrows = displayNavArrows;//左右分頁切換,默認否browser.displaySelectionButtons = displaySelectionButtons;//是否顯示選擇按鈕在圖片上,默認否browser.alwaysShowControls = displaySelectionButtons;//控制條件控件 是否顯示,默認否browser.zoomPhotosToFill = NO;//是否全屏,默認是 #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0browser.wantsFullScreenLayout = YES;//是否全屏 #endifbrowser.enableGrid = enableGrid;//是否允許用網格查看所有圖片,默認是browser.startOnGrid = startOnGrid;//是否第一張,默認否browser.enableSwipeToDismiss = YES;[browser showNextPhotoAnimated:YES];[browser showPreviousPhotoAnimated:YES];[browser setCurrentPhotoIndex:1];browser.photoTitles = @[@"000",@"111",@"222",@"333"];//標題// [self presentViewController:browser animated:YES completion:nil];[self.navigationController pushViewController:browser animated:NO]; }#pragma mark - MWPhotoBrowserDelegate- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser {return _photos.count; }- (id )photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index {if (index < _photos.count)return [_photos objectAtIndex:index];return nil; }

3 iOS開發網絡數據之AFNetworking使用

http網絡庫是集XML解析,Json解析,網絡圖片下載,plist解析,數據流請求操作,上傳,下載,緩存
等網絡眾多功能于一身的強大的類庫。最新版本支持session,xctool單元測試。網絡獲取數據一直是手
機軟件的重中之重,如果處理的不好,會造成很差的用戶體驗。隨著ASIHTTPRequest的停止更新,更換
網絡庫是必然的事情,AFNetworking就是很好的替代品。而且都是輕量級,不要擔心加入太多庫會多軟
件性能有影響。
1.為什么用第三方網絡庫?先說如果不用網絡庫,我曾有一次覺得什么都用蘋果原生的好,XML解析用蘋
果自帶的委托,下載圖片自己寫,如果你也有跟我一樣的經歷,那你會發現自己管理起來很復雜,很容
易出錯。而且性能不好。如果你是一個追求完美的人,那就放下你的固執,就如當初的我一樣,嘗試一
下網絡庫吧。
2.為什么要用AFNetworking?第一點,它有人更新和維護,而且目前使用者很多,第二點,還是使用者很
多,那么他的資料,文檔,demo就多,很好找遇到問題好解決。如果不用AFNetworking,還有一種
MKNetworkKit也不錯,不妨一試。
如何選擇AFNetworking版本
首先得下載AFNetworking庫文件,下載時得首先弄清楚,你將要開發的軟件兼容的最低版本是多少。
AFNetworking 2.0或者之后的版本需要xcode5.0版本并且只能為IOS6或更高的手機系統上運行,如果開
發MAC程序,那么2.0版本只能在MAC OS X 10.8或者更高的版本上運行。
AFNetworking 2.0的下載地址https://github.com/AFNetworking/AFNetworking
如果你想要兼容IOS5或MAC OS X 10.7,那你需要用最新發布的1.x版本
AFNetworking 1.x的下載地址https://github.com/AFNetworking/AFNetworking/tree/1.x
如果要兼容4.3或者MAC OS X 10.6,需要用最新發布的0.10.x版本
AFNetworking 0.10.xhttps://github.com/AFNetworking/AFNetworking/tree/0.10.x
2013年大多數軟件兼容的最低版本為4.3,而2014年,估計大多數軟件兼容的最低版本將會是5.0甚至6.0

所以,目前最好的選擇還是1.x版本,兼容到IOS5.0。
如何通過URL獲取json數據

第一種,利用AFJSONRequestOperation,官方網站上給的例子:

NSString *str=[NSString stringWithFormat:@"https://alpha-api.app.net/stream/0/posts/stream/global"];NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url];// 從URL獲取json數據AFJSONRequestOperation *operation1 = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSDictionary* JSON) {NSLog(@"獲取到的數據為:%@",JSON);} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id data) {NSLog(@"發生錯誤!%@",error);}];[operation1 start];
第二種方法,利用AFHTTPRequestOperation 先獲取到字符串形式的數據,然后轉換成json格式,將
NSString格式的數據轉換成json數據,利用IOS5自帶的json解析方法:

NSString *str=[NSString stringWithFormat:@"https://alpha-api.app.net/stream/0/posts/stream/global"];NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url];AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {NSString *html = operation.responseString;NSData* data=[html dataUsingEncoding:NSUTF8StringEncoding];id dict=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];NSLog(@"獲取到的數據為:%@",dict);}failure:^(AFHTTPRequestOperation *operation, NSError *error) {NSLog(@"發生錯誤!%@",error);}];NSOperationQueue *queue = [[NSOperationQueue alloc] init];[queue addOperation:operation];
如果發生Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x14defc80?
{NSUnderlyingError=0x14deea10 "bad URL", NSLocalizedDescription=bad URL這個錯誤,請檢查URL
編碼格式。有沒有進行stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

如何通過URL獲取圖片
異步獲取圖片,通過隊列實現,而且圖片會有緩存,在下次請求相同的鏈接時,系統會自動調用緩存,
而不從網上請求數據。

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 100.0f, 100.0f)]; [imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]]; [self.view addSubview:imageView]; 上面的方法是官方提供的,還有一種方法, NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.scott-sherwood.com/wp-content/uploads/2013/01/scene.png"]];AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {self.backgroundImageView.image = image;} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {NSLog(@"Error %@",error);}];[operation start];
如果使用第一種URLWithString: ?placeholderImage:會有更多的細節處理,其實實現還是通過
AFImageRequestOperation處理,可以點擊URLWithString: ?placeholderImage:方法進去看一下就一
目了然了。所以我覺得還是用第一種好。

如何通過URL獲取plist文件
通過url獲取plist文件的內容,用的很少,這個方法在官方提供的方法里面沒有

NSString *weatherUrl = @"http://www.calinks.com.cn/buick/kls/Buickhousekeeper.plist";NSURL *url = [NSURL URLWithString:[weatherUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url];[AFPropertyListRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];AFPropertyListRequestOperation *operation = [AFPropertyListRequestOperation propertyListRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList) {NSLog(@"%@",(NSDictionary *)propertyList);}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList) {NSLog(@"%@",error);}];[operation start]; 如果稍不留神,可能就出現Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {("application/x-plist" )}, got text/plain" UserInfo=0x16e91ce0 {NSLocalizedRecoverySuggestion=... ... , AFNetworkingOperationFailingURLRequestErrorKey= { }, NSErrorFailingURLKey=, NSLocalizedDescription=Expected content type {("application/x-plist" )}, got text/plain, AFNetworkingOperationFailinponseErrorKey= { URL: } { status code: 200, headers {"Accept-Ranges" = bytes;Connection = "keep-alive";"Content-Length" = 974;"Content-Type" = "text/plain";Date = "Sat, 25 Jan 2014 07:29:26 GMT";Etag = ""1014c2-3ce-4ee63e1c80e00"";"Last-Modified" = "Wed, 25 Dec 2013 23:04:24 GMT";Server = "nginx/1.4.2";} }}
可能還會出現亂碼,解決辦法就是[AFPropertyListRequestOperation addAcceptableContentTypes:
[NSSet setWithObject:@"text/plain"]];

如何通過URL獲取XML數據
xml解析使用AFXMLRequestOperation,需要實現蘋果自帶的NSXMLParserDelegate委托方法,XML中有一
些不需要的協議格式內容,所以就不能像json那樣解析,還得實現委托。我之前有想過能否所有的XML鏈
接用一個類處理,而且跟服務端做了溝通,結果很不方便,效果不好。XML大多標簽不同,格式也不固定
,所以就有問題,使用json就要方便的多。
第一步;在.h文件中加入委托NSXMLParserDelegate
第二步;在.m文件方法中加入代碼

NSURL *url = [NSURL URLWithString:@"http://113.106.90.22:5244/sshopinfo"];NSURLRequest *request = [NSURLRequest requestWithURL:url];AFXMLRequestOperation *operation =[AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {XMLParser.delegate = self;[XMLParser setShouldProcessNamespaces:YES];[XMLParser parse];}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {NSLog(@"%@",error);}];[operation start];
第三步;在.m文件中實現委托方法

//在文檔開始的時候觸發 -(void)parserDidStartDocument:(NSXMLParser *)parser{NSLog(@"解析開始!"); } //解析起始標記 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{NSLog(@"標記:%@",elementName);} //解析文本節點 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{NSLog(@"值:%@",string); } //解析結束標記 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{NSLog(@"結束標記:%@",elementName); } //文檔結束時觸發 -(void) parserDidEndDocument:(NSXMLParser *)parser{NSLog(@"解析結束!"); }
運行的結果:


如何使用AFHTTPClient進行web service操作
AFHTTPClient處理GET 和 POST請求.做網頁的朋友們這個方法用的比較多。在要經常調用某個請求時,
可以封裝,節省資源。

BaseURLString = @"http://www.raywenderlich.com/downloads/weather_sample/";NSURL *baseURL = [NSURL URLWithString:[NSString stringWithFormat:BaseURLString]];NSDictionary *parameters = [NSDictionary dictionaryWithObject:@"json" forKey:@"format"];AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];[client registerHTTPOperationClass:[AFJSONRequestOperation class]];[client setDefaultHeader:@"Accept" value:@"text/html"];[client postPath:@"weather.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {NSString* newStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];NSLog(@"POST請求:%@",newStr);}failure:^(AFHTTPRequestOperation *operation, NSError *error) {NSLog(@"%@",error);}];[client getPath:@"weather.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {NSString* newStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];NSLog(@"GET請求:%@",newStr);}failure:^(AFHTTPRequestOperation *operation, NSError *error) {NSLog(@"%@",error);}];
運行結果:

如果需要顯示網絡活動指示器,可以用下面方法:
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable?
content-type: text/html" UserInfo=0x16774de0?
{NSErrorFailingURLKey=http://192.168.2.2:8181/ecar/tsp/uploadLocation?
CID=781666&serviceType=1, AFNetworkingOperationFailinponseErrorKey= { URL:?
http://192.168.2.2:8181/ecar/tsp/uploadLocation?CID=781666&serviceType=1 } { status code:?
200, headers {
? ? XXX
} }, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}
返回數據格式不對。注銷這句話: op.responseSerializer = [AFJSONResponseSerializer?
serializer];然后將返回的數據自己轉換。


4 NSXMLParser和GDataXMLNode兩種解析方式


 iPhone中兩種XML解析方式NSXMLParser和GDataXMLNode是本文要介紹的內容,很詳細的介紹了
NSXMLParser和GDataXMLNode這兩種方式,常用的解析XML的方式分為兩種,它們基于不同的API:
  1.Tree-based API:這種API的處理方式是將XML的結構看成是樹,然后把樹的各部分看成一個對象
來處理,這就是我們說的DOM (Document Object Model)方式 ?。在iPhone的SDK里包含了一個libxml2的
框架(Framework)就能進行DOM解析方式 ?。Google的GDataXML也是基于libxml2的,因此在使用GDataXML
之前,你需要先導入libxml2 ?。
  2.Event-driven API:這種方式通常用于解析基于的事件,SAX解析方式就是這種解析方式的代表 ?
。在iPhone開發的,也可以利用這種方式來解析XML,不過這可不是Iphone SDK的屬性啊,而是
Objective-C的功能 ?。在Objectvie-C種有專門解析XML的類NSXMLParser ?。
  NSXMLParser和CGataXML的使用方法:
  NSXMLParser解析方式
  NSXMLParser解析XML的主要工作都是靠它的代理(NSXMLParserDelegate)來實現的 ?。

- (void)viewDidLoad { [super viewDidLoad]; //........ NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://lab.xxxxxx.com/xxx/xxx.xml"]]; [parser setDelegate:self]; [parser parse]; for (int i = 0; i < [newsArray count]; i++) { NSLog(@"%@",[newsArray objectAtIndex:i]); } }
就這么幾句,就開始解析了,怎樣得到XML里面的數據呢?
  那就去代理里面找吧!

#pragma mark NSMXLParser Delegate Methods - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ if ([elementName isEqualToString:@"docTitle"]) { if (!newsArray) { newsArray = [[NSMutableArray alloc] init]; return; } } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ if (!currentString) { currentString = [[NSMutableString alloc] init]; } [currentString appendString:string]; [currentString setString:[currentString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ if ([elementName isEqualToString:@"docTitle"]) { [newsArray addObject:currentString]; } [currentString release]; currentString = nil; }
先說一下程序運行的流程,當parser初始化并執行parse語句時([parser parse]),程序會跳到代理
方法里面走第一個代理方法 ?。第一個代理方法會將整個xml遍歷一遍,并識別xml里面的元素名稱
(elementName),在發現有我想找的信息(docTitle)時,創建一個數組用來存儲這些信息,當然第一個代
理還沒開始存儲信息 ?。
  接下來會走第二個代理,它會把第一個代理中我們相要找的信息存儲在currentString中 ?。其中我
增加了一個對獲取的字符串的處理語句 [currentString setString:[currentString?
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]],它可以
將字符串開始的空格和換行附去掉(因為常會遇到xml文件格式不太標準的) ?。
  最后是第三個代理方法,把我們獲取的信息存儲到數組中 ?。
  當然程序運行過程中這三步的順序并不是這么嚴格的執行的,而且會反復的執行,但是大致的處理
過程是這樣的 ?。

  DOM解析方式之GDataXMLNode
  GDataXMLNode是基于libxml2的第三方文件,功能比較強大 ?。

NSError* error = nil; NSString *documentStr = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.xxxx.com/x/xxx.xml"] encoding:NSUTF8StringEncoding error:&error]; GDataXMLDocument* XMLdocument = [[GDataXMLDocument alloc] initWithXMLString:documentStr options:0 error:&error]; [documentStr release]; GDataXMLElement* rootElement = [XMLdocument rootElement]; NSArray *newsArray = [rootElement elementsForName:@"docTitle"]; for (int i = 0; i < [newsArray count]; i++) { NSLog(@"%@",[[newsArray objectAtIndex:i] stringValue]); }
就這么幾句,功能和上面的NSXMLParser,當然這個數組里存儲的是GDataXMLElement的對象而不是
字符串 ?。
  在DOM解析方式中,先將XML文件或鏈接轉化成對象,這里是GDataXMLDocument對象,然后該對象里
面的每一部分都看成一個對象,如rootElement是一個GDataXMLElement對象,它是整個XML樹的根,包含
了該XML的所有信息 ?。我們直接在rootElement下找名為:docTitle的對象,把它放在數組里面(因為
這樣的對象可能不止一個) ?。我們要取docTitle對象里面的內容hello iPhone,該對象的stringValue
就是 ?。


5 GDataXMLNode:xml解析庫


一、GDataXMLNode說明
GDataXMLNode是Google提供的用于XML數據處理的類集。該類集對libxml2--DOM處理方式進行了封裝,能
對較小或中等的xml文檔進行讀寫操作且支持XPath語法。
使用方法:
? ? ?1、獲取GDataXMLNode.h/m文件,將GDataXMLNode.h/m文件添加到工程中
? ? ?2、向工程中增加“libxml2.dylib”庫
? ? ?3、在工程的“Build Settings”頁中找到“Header Search Path”項,添
加/usr/include/libxml2"到路徑中
? ? ?4、添加“GDataXMLNode.h”文件到頭文件中,如工程能編譯通過,則說明GDataXMLNode添加成功

二、GDataXMLNode示例

示例:
html
<root> ?
? ? ?<name value="wusj"/> ?
? ? ?<age>24</age> ?
</root> ?

對此xml文件進行解析

NSString *xmlPath = [[NSBundlemainBundle] pathForResource:@"test"ofType:@"xml"]; NSString *xmlString = [NSStringstringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncodingerror:nil]; GDataXMLDocument *xmlDoc = [[GDataXMLDocumentalloc] initWithXMLString:xmlString options:0error:nil]; GDataXMLElement *xmlEle = [xmlDoc rootElement]; NSArray *array = [xmlEle children]; NSLog(@"count : %d", [array count]); for (int i = 0; i < [array count]; i++) { GDataXMLElement *ele = [array objectAtIndex:i]; // 根據標簽名判斷 if ([[ele name] isEqualToString:@"name"]) { // 讀標簽里面的屬性 NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]); } else { // 直接讀標簽間的String NSLog(@"age --> %@", [ele stringValue]); } }
? ? 運行結果: ? ? ? ? ??

三、GDataXMLNode方法小結
? ? ?最終的數據讀出都是在GDataXMLElement對象中讀出的,以下方法均為GDataXMLElement類的方法
? ? ?1、name方法,取標簽名 e.g name標簽的名稱“name”
? ? ?2、attributeForName: 取屬性結點 再調stringValue即可取到屬性值 e.g name標簽中的value屬

? ? ?3、stringValue: 取標簽間的字符串值 ?e.g: age間的24


6 ASIHttpRequest

ASIHttpRequest是一個對CFNetwork API進行了封裝,并且使用起來非常簡單的一套http請求api。
官方地址:http://allseeing-i.com/ASIHTTPRequest/
依賴庫:CFNetwork.framework、SystemConfiguration.framework、MobileCoreServices.framework、
CoreGraphics.framework和libs.1.2.3dylib

下面是簡單的http請求示例:
1、同步的http請求

// 簡單的同步請求示例 - (void)syncRequest { NSURL *url = [NSURLURLWithString:@"http://www.weather.com.cn/data/sk/101010100.html"]; ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url]; [request startSynchronous]; NSError *error = [request error]; if (!error) { NSString *response = [request responseString]; NSLog(@"Response :%@", response); self.result.text = response; } else { self.result.text = @"error"; } }
2、異步的http請求

// 簡單的異步請求示例(代理實現) - (void)asyncRequest { NSURL *url = [NSURLURLWithString:@"http://www.weather.com.cn/data/cityinfo/101010100.html"]; ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url]; request.delegate = self; // 開始異步請求 [request startAsynchronous]; }
代理方法:

<pre name="code" class="objc">// 請求完成 - (void)requestFinished:(ASIHTTPRequest *)request { // 如果請求的是二進制數據,用responseData,用NSData接收 NSLog(@"異步請求成功返回"); self.result.text = [request responseString]; } // 請求失敗 - (void)requestFailed:(ASIHTTPRequest *)request { NSLog(@"異步請求失敗"); self.result.text = @"error"; }
3、塊語法實現的異步請求

<pre name="code" class="objc">// 簡單的異步請求用塊語法實現 - (void)asyncRequestBlock { NSURL *url = [NSURLURLWithString:@"http://m.weather.com.cn/data/101010100.html"]; __blockASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url]; [request setCompletionBlock:^{ // 請求響應結束 NSString *response = [request responseString]; self.result.text = response; }]; [request setFailedBlock:^{ // 請求失敗 NSError *error = [request error]; // self.result.text = NSLog(@"error : %@", [error userInfo]); }]; [request startAsynchronous]; }

7 IOS使用第三方工具(RegexKitLite)實現正則表達式

? ? ? ?在IOS應用中,經常要輸入數據,然輸入數據,就要校驗數據的合法性,這是我們很自然的聯想 到web應用中的正則表達式。然而Cocoa并未支持正則表達式。這是我們可以使用第三方工具 (RegexKitLite)來實現正則表達式。1、下載(RegexKitLite)類庫,備用下載地址:RegexKitLite,將RegexKitLite.h/? RegexKitLite.m兩個文件添加到您的項目中;2、在您的工程中添加libicucore.dylib frameworks;3、在您要校驗的數據中使用RegexKitLite,這里假設校驗一個電子郵箱 <pre name="code" class="objc">NSString *email = @"iMilo@163.com"; NSString *regex = @"\\b([a-zA-Z0-9%_.+\\-]+)@([a-zA-Z0-9.\\-]+?\\.[a-zA-Z]{2,6})\\b"; if ([email isMatchedByRegex:regex]) {NSLog(@"通過校驗!"); } else {NSLog(@"未通過校驗,數據格式有誤,請檢查!"); }
說明:查看RegexKitLite源代碼,您會發現其實是對NSString的擴展,所以校驗的數據必須是NSString
類型的。

1、在寫正則表達式時:所有的’\’都需要轉義,即:’\\’;
2、在很多JS的正則表達式可能是這樣寫,如:’/^\d{1,400}$/’,但是這樣的表達式Objective-C中并
不能識別,通過實際調試得出,應將其寫為:’ ^\\d{1,400}$’(即:去掉表達式頭和尾的’/’)

總結

以上是生活随笔為你收集整理的IOS常用代码总结 - 第三方库部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。