用manage封装一个网络请求
上一篇文章中说到使用JSONModel,我们将请求内容写到了viewDidLo中,实际使用中肯定不能这么麻烦,我们有不同的网络请求,我们可以创建单例模式,与一个全局的manage类用实例manage来执行网络请求,用manage传递请求数据,在model中完成解析
我们会使用到:单例模式与Block传值
单例模式
使用单例模式的变量在整个程序中之需要创建一次,其生命周期是在他被使用时一直到程序结束后释放,类似于静态变量,所以我们需要考虑其生命周期,唯一性以及线程安全
static修饰全局变量
作用域仅限于当前文件,外部类无法访问到该全局变量,在默认情况下,全局变量在整个程序中是可以被访问的(作用域为整个项目)
为保证线程安全,我们要使用dispatch_once:(保证程序只运行一次)
在manage文件中
在上一篇文章中,我们创建了testModel文件,我们需要将其引入manage文件中,其文件是用来接受传回来的值的
我们一共需要完成两个函数进行请求
除了单例的初始化之外,还有网络请求的函数
我们需要在完成网络请求的时候添加两个block传值,用来判断是否错误,传回不同的值
这是成功
如果我们断网请求
implementation中的方法
@implementation Top_StoriesModel
//+ (BOOL)propertyIsOptional:(NSString *)propertyName 作用是不想因为服务器的某个值没有返回(nil)就使程序崩溃, 可以加关键字Optional,如果不想每一条属性都添加,也可以在.m文件中重写方法
+ (BOOL)propertyIsOptional:(NSString *)propertyName {
return YES;
}
@end
关于此方法值得注意的是,如果一个网址有很多数据,但是我们只想要其中的几个多余的不要,如果我们不添加这个函数就会请求出错
可以看到会请求到“空”