iOS常用的第三方库

时间:2024-03-16 10:07:17

 1,AFNetworking(轻量级网络通信库)

        源码地址:https://github.com/AFNetworking/AFNetworking

        AFNetworking是一个非常受欢迎的轻量级的iOS、Mac OS X网络通信类库。它建立在 NSURLConnection、NSOperation以及其技术的基础上,有着精心设计的模块结构和功能丰富的API,让很多网络通信功能的实现变得十分简单。

         AFNetworking支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT以及DELETE等)。支持ARC。AFNetworking项目中还包含一些列单元测试。要求iOS 5.0及以上版本,或者Mac OS 10.7及以上版本。

Get方法請求

      无参数方式:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@"JSON: %@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    NSLog(@"Error: %@", error);

}];

       有参数方式,其实和无参一样:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSMutableDictionary *params = [NSMutableDictionary dictionary];

params[@"param1"] = @"1";

params[@"param2"] = @"2";

[manager GET:@"http://example.com/resources.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@"JSON: %@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    NSLog(@"Error: %@", error);

}];

Post请求方式:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSDictionary *parameters = @{@"foo": @"bar"};

[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@"JSON: %@", responseObject);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    NSLog(@"Error: %@", error);

}];


2,JSONKit(Json解析库)

https://github.com/johnezang/JSONKit

JSON(JavaScript Object Notation)是一个轻量级的,基于文本的,序列结构化数据格式. 由RFC 4627定义.提供以下主要类型:

1、使用:

NSString *jsonstring [email protected]"[{\"age\":18,\"book\": {\"price\":23.2,\"title\":\"boook111\"},\"name\":\"samyou\"},{\"age\":22,\"book\":{\"price\":33,\"title\":\"booook222\"},\"name\":\"samsam\"}]";  

NSData *data=[jsonstring dataUsingEncoding:NSUTF8StringEncoding]; 

NSArray *arr=(NSArray *)[data mutableObjectFromJSONData]; 

NSLog(@"count=%d",arr.count); 

for(inti=0;i<arr.count;i++) {

       NSDictionary *people=[arr objectAtIndex:i]; 

       NSString *name=[people objectForKey:@"name"]; 

       NSString *age=[people objectForKey:@"age"]; 

       NSLog(@"person withname=%@,age=%d",name,[age intValue]); 

       NSDictionary *book=[people objectForKey:@"book"]; 

       NSString *bookname=[book objectForKey:@"title"]; 

       NSNumber *price=[book objectForKey:@"price"]; 

       NSLog(@"book with title=%@,price=%f",bookname,[price doubleValue]); 

}


3,JSON Framework(JSON支持)

地址:http://stig.github.com/json-framework/

       如果你做的应用和网站服务器有交互,那就得用到JSON了。但事实上,iOS平台的原生类库根本就不支持JSON,这就略犀利了吧?不过JSON框架满足了你的所有需求,包括一个解析器将JSON字符串解析成对象;以及一个生成器从对象生成字符串。这个库根本就是太流行了,JSON提过很多次了,具体特点就不多讲了,所谓“一段代码胜千言”,下面用一段代码演示一下吧。

// JSON string -> NSDictionary    

NSString *jsonString = @"{\"foo\": \"bar\"}";   

NSDictionary *dictionary = [jsonString JSONValue];   

NSLog(@"Dictionary value for \"foo\" is \"%@\"", [dictionary objectForKey:@"foo"]);   

// NSDictionary -> JSON string   

NSString *newJsonString = [dictionary JSONRepresentation]; 


4,ASIHttpRequest(HTTP Network库)

地址:http://allseeing-i.com/ASIHTTPRequest/

iPhone当然也有自己的HTTP Network API,那为什么要用ASIHttpRequest呢?因为官方的API简直跟话痨似的,太罗嗦了!ASIHttpRequest库极大的简化了网络通信,提供更先进的工具,什么文件上传工具,重定向处理工具、验证工具等等。只要你手头的东西跟HTTP有关,用这个绝对能让你感觉道生活有美好!先看一 段代码就体会到了。

  1. (void) loadAppDevMag    

  2. {    

  3.    NSURL *url = [NSURL URLWithString:@"http://www.appdevmag.com"];    

  4.    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];    

  5.    [request setDelegate:self];    

  6.    [request startAsynchronous];    

  7. }    

  8. - (void)requestFinished:(ASIHTTPRequest *)request    

  9. {    

  10.    // Use when fetching text data    

  11.    NSString *responseString = [request responseString];    

  12. }   


5,SDWebImage(简化网络图片处理)

地址:https://github.com/rs/SDWebImage

用SDWebImage调用网站上的图片,跟本地调用内置在应用包里的图片一样简单。操作也很简单,举例说明

  1. [imageView setImageWithURL:[NSURL URLWithString:@"http://example.com/image.png"]]; 

类似的功能在Three20里也有;相比而言,SDWebImage主要是提供一个小而精的简捷方便的解决方案,


6,Three20(通用iOS库)

地址:https://github.com/facebook/three20

iOS常用的第三方库

Three20类库是Facebook自己做的,大而全是他最大的特色。把他整合到已有的项目中可能得费点周折,不过如果一开始你就用上了Three20,尤其是牵扯到很多web相关的项目的时候,你就能深刻体会到神马叫给力了。


7,MBProgressHUD(进度指示符库)

地址:https://github.com/jdg/MBProgressHUD

苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore。而 MBProgressHUD提供了一个替代方案,而且在用户角度上,实现的效果根本看不出和官方程序有什么差别。同时还提供了其他附加功能,比如虚拟进展 指示符,以及完成提示信息。整合到项目里也很容易,这里不细谈了。


8,Flurry(详尽的使用统计)

地址:http://www.flurry.com/product/analytics/index.html

iOS常用的第三方库

通过Furry你可以得到应用的用户人数,用户活跃度,用户来源等统计信息。但是他最厉害的地方是,你可以追踪应用本身的事件和错误记录,所有这些数据都会在一个类似Google Analytics的界面上显示,这样就很容易掌握用户的行为和出现的问题。当然,这个星球上很多统计工具,但是这款是作者个人比较推崇的解决方案。


9,RegexKitLite(正则表达式支持)

地址:http://regexkit.sourceforge.net/RegexKitLite/

正则表达式大家都知道。但是iPhone SDK居然当他不存在?这怎么能忍啊!果断用RegexKitLite。虽然叫的是Lite,但是功能很full。示例代码。

  1. // finds phone number in format nnn-nnn-nnnn    

  2. NSString *regEx = @"[0-9]{3}-[0-9]{3}-[0-9]{4}";    

  3. for(NSString *match in [textView.text componentsMatchedByRegex:regEx]) {    

  4.     NSLog(@"Phone number is %@", match);    

  5. }   


10,Facebook iOS SDK(Facebook API类库)

地址:https://github.com/facebook/facebook-ios-sdk

 iOS常用的第三方库

大体来讲就是iPhone上的Facebook login,完全支持Facebook Graph API和the older REST api。如果你的应用跟Facebook有关,用这个吧。