内容简介:常用的第三方库其中的XTSafeCollection推荐使用,避免数组越界引起的crash。对Afnetworking进行一次封装
1. 使用cocoaPod进行第三方库的管理
常用的第三方库
platform :ios, '7.0' target 'Structure' do pod 'AFNetworking', '~> 2.5.4' pod 'SDWebImage', '~> 3.7.5' pod 'JTObjectMapping', '~> 1.1.2' pod 'XTSafeCollection', '~> 1.0.3' pod 'Masonry', '~> 0.6.4' end 复制代码
其中的XTSafeCollection推荐使用,避免数组越界引起的crash。
2. 网络层
(1)AFNetworking的封装
对Afnetworking进行一次封装
+ (AFHTTPSessionManager *)sharedClient; + (NSURLSessionDataTask *)postRequest:(NSString*)path parameters:(id)parameters encToken:(NSString*)encToken isLogin:(BOOL)isLogin success:(void (^)(ErrorCode status, NSString * msg, NSDictionary * data))success failure:(void (^)(ErrorCode status, NSString *msg, NSDictionary * data))failure; + (NSURLSessionDataTask *)getRequest:(NSString*)path parameters:(NSDictionary*)parameters encToken:(NSString*)encToken isLogin:(BOOL)isLogin success:(void (^)(ErrorCode status, NSString * msg, NSDictionary * data))success failure:(void (^)(ErrorCode status, NSString *msg, NSDictionary * data))failure; + (NSURLSessionDataTask *)uploadRequest:(NSString*)path parameters:(NSDictionary*)parameters encToken:(NSString*)encToken formDataArray:(NSArray *)formDataArray isLogin:(BOOL)isLogin success:(void (^)(ErrorCode status, NSString * msg, NSDictionary * data))success failure:(void (^)(ErrorCode status, NSString *msg, NSDictionary * data))failure; + (NSURLSessionDataTask *)putRequest:(NSString*)path parameters:(NSDictionary*)parameters encToken:(NSString*)encToken isLogin:(BOOL)isLogin success:(void (^)(ErrorCode status, NSString * msg, NSDictionary * data))success failure:(void (^)(ErrorCode status, NSString *msg, NSDictionary * data))failure; + (NSURLSessionDataTask *)deleteRequest:(NSString*)path parameters:(NSDictionary*)parameters encToken:(NSString*)encToken isLogin:(BOOL)isLogin success:(void (^)(ErrorCode status, NSString * msg, NSDictionary * data))success failure:(void (^)(ErrorCode status, NSString *msg, NSDictionary * data))failure; 复制代码
在sharedClient中创建一个AFHTTPSessionManager,并封装了Get,Post,Upload,Put和Delete几个类方法,进行HTTP的基本请求操作。
(2)WebService 的使用
假设有一个接口 #define URL_TEST @"test"
需要进行网络获取,那么创建一个ChatsModel.h的文件,这个文件主要是将Chats模块的所有的接口都会放在这个文件中。如
- (void)fetchData:(void (^)(ErrorCode status, NSString *messageStr, ChatsEntity *chatesEntity))compelte;
进行网络获取。
(3)Entity的转化
将Json转化为Model使用JTObjectMapping的第三方库,当然也可以用Mantle。将从服务器返回的数据直接转化为Model。Model中有2个实例变量
@property (nonatomic, strong) NSString *nameStr; @property (nonatomic, strong) NSNumber *ageIntNum; 复制代码
创建一个方法进行类型的转换
+ (instancetype)createChatsEntityWithDic:(NSDictionary *)dic { NSDictionary *mapping = @{ @"name": @"nameStr", @"age":@"ageIntNum", }; ChatsEntity *entity = [ChatsEntity objectFromJSONObject:dic mapping:mapping]; return entity; } 复制代码
3. 组织结构
关于组织结构,一定要打开项目的文件夹,手动先创建每层的文件夹,再将文件夹Add到project中,这样有一个好处是Xcode中显示的文件夹和Finder显示的保持一致。 不然Finder中看到的文件是全部放在Structure文件夹中,不方便阅读。
(1)Macros
宏定义一般创建4个文件: <1> URL.h 将网络访问需要使用的URL宏定义在这个文件中。如 #define SERVER_URL @"http://www.baidu.com"
. <2> Keys.h 将需要用的Key放在这个文件,如微信,微博,shareSDK等。 <3> Macros.h 将项目中用到并且是全局要用到的Enumeration放在这个文件中,方便调用也可以避免重复定义。如
typedef enum { //未知错误 kUnknownError = -1, kNoError = 0, kNetWorkError = 1, }ErrorCode; 复制代码
<4> UserDefaultAndNotification.h 将通知和保存到User Default中的Key保存到这个文件,方便统一管理Keys,避免重复定义引起异常错误。 <5>Utilities.h 将定义的 工具 宏统一放在这个文件中,常见的DLog等。
(2)MVCs
业务相关的文件,根据模块分开,每一个模块中再依据MVC进行区分,如
Chats文件夹是聊天的模块, <1>其中的ViewController.h/.m是Chats的根Controller。 <2>Model文件夹对应M层,并包含了Entity的文件夹,进行Json转Model。 <3>Views文件夹对应MVC中的V层。
(3)Utilities
将在每一个模块中,需要使用到UIKit或算法,可以抽出来放在文件中,如自定义的AlertView货Share。
(4)Base
定义一些基础的类,如UIViewController,UINavigationController。根据APP的需求将通用的颜色,加载视图等放在这个文件夹中。
(5)External
第三方库的文件,有些第三方库没有在Cocoapod上,那么将文件Copy到这个文件夹中, 尽量不要修改第三方库的文件 ,可以创建第三方库的category来扩展功能。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Mojolicious 8.0 发布,变更项目组织结构
- Mojolicious 8.0 发布,变更项目组织结构
- Golang 项目目录结构组织
- 大多数软件问题归根结底都是组织结构问题
- Thrift RPC 系列教程(4)——源码目录结构组织
- 云办公系统 skyeye v3.4.3 发布,组织结构,任务计划模块,薪资模块更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Black Box Society
Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00
Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!