内容简介:常用的第三方库其中的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 发布,组织结构,任务计划模块,薪资模块更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
即将到来的场景时代
罗伯特•斯考伯、谢尔•伊斯雷尔 / 赵乾坤 周宝曜 / 北京联合出版公司 / 2014-5-1 / 42
科技大神、全球科技创新领域最知名记者 罗伯特·斯考伯:“技术越了解你,就会为你提供越多好处!” 互联网的炒作点一个一个不停出现,大数据、3D打印、O2O等,无不宣扬要颠覆商业模式。但是,互联网进入移动时代,接下来到底会发生什么?移动互联网时代真正带来哪些改变?这具体会怎样影响我们每一个人的生活?商业真的会被颠覆?目前为止没有一本书给出答案。 《即将到来的场景时代》不是就一个炒作点大加谈......一起来看看 《即将到来的场景时代》 这本书的介绍吧!