文档章节

iOS 网络获取封装类

JoshSone
 JoshSone
发布于 2016/11/11 00:11
字数 267
阅读 36
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

目的:我们在获取网络数据时,要进行很多固定而且繁琐的步骤,在这里封装了一个网络获取数据的类方法,可以在需要时引用。

#import <Foundation/Foundation.h>

typedef void(^ResponseSuccess)(id object);
typedef void(^ResponseFailed)(NSError*error);
@interface MyRootRequset : NSObject
// 这里有三个参数,分别传入网络URL地址,获取数据成功时传出的语法块,失败时传出的语法快
+(void)GetUrlWithString:(NSString*)URLStr WithRequestSuccess:(ResponseSuccess)successBlock WithRequestFailed:(ResponseFailed)failedBlock;
@end

 

#import "MyRootRequset.h"

@implementation MyRootRequset

+(void)GetUrlWithString:(NSString*)URLStr WithRequestSuccess:(ResponseSuccess)successBlock WithRequestFailed:(ResponseFailed)failedBlock{
    //URL 统一资源定位符
    NSURL*url=[NSURL URLWithString:URLStr];
    //创建一个请求
    NSMutableURLRequest*request=[NSMutableURLRequest  requestWithURL:url cachePolicy:0 timeoutInterval:5];
    //创建一个请求数据的任务(以异步的形式发送请求)
    NSURLSessionTask*task=[[NSURLSession sharedSession]dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error==nil) {
    //解析数据
            NSError*error_json;
            id object=[NSJSONSerialization JSONObjectWithData:data options:0 error:&error_json];
    //主线程加载UI     
            dispatch_sync(dispatch_get_main_queue(), ^{
                if (error_json!=nil) {
                    //解析错误
                    if (failedBlock!=nil) {
                        failedBlock(error_json);
                    }
                }else{
                    //解析成功
                    if (successBlock!=nil) {
                        successBlock(object);
                    }
                }
            });
                    }else{
                        dispatch_sync(dispatch_get_main_queue(), ^{
                    //网络错误
                            if (failedBlock!=nil) {
                                failedBlock(error);
                            }
                        });
                   }
    }];

    [task resume];
}
@end

 

JoshSone
粉丝 7
博文 76
码字总数 32794
作品 0
长春
iOS工程师
私信 提问
加载中
此博客有 1 条评论,请先登录后再查看。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.5K
8
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
693
1
代码生成器--Codgen

Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节...

黄天政
2013/01/29
1.4W
2
iOS 应用版本更新检查--Harpy

实现 app 版本检查功能。用户打开app之后,进行app的版本更新检查。如果检查到 appstore 上有当前qpp的新版本,则弹出对话框提醒用户下载。可以设置让用户选择下载或者强制用户下载。 [Code4...

匿名
2013/02/18
1.8K
0
JavaScript 声效库--SFX.js

sfx.js 是一个简单的声效封装 JavaScript 包。示例: var sfxObject = new SFX( 'sound_effects/{{type}}' ); 支持: Chrome: OGG + MP3 Opera: OGG Firefox: OGG Safari: MP3 IE9: MP3......

匿名
2013/02/18
1.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

C#中const和readonly有什么区别? - What is the difference between const and readonly in C#?

问题: What is the difference between const and readonly in C#? C#中const和readonly什么区别? When would you use one over the other? 您什么时候可以使用另一个? 解决方案: 参考一...

fyin1314
31分钟前
25
0
百度地图SDK新版内测邀请

本文作者:用****9 百度地图开放平台为开发者提供七大基础服务能力,其中地图SDK和导航SDK是开发者广泛使用的重要基础服务,为了满足开发者更多使用需求以及提升开发者集成后的应用效果,本次...

百度开发者中心
前天
13
0
获取JavaScript数组中的所有唯一值(删除重复项) - Get all unique values in a JavaScript array (remove duplicates)

问题: I have an array of numbers that I need to make sure are unique. 我需要确定一个唯一的数字数组。 I found the code snippet below on the internet and it works great until th......

javail
今天
11
0
如何检查字符串是否为空? - How to check if the string is empty?

问题: Does Python have something like an empty string variable where you can do: Python是否有类似空字符串变量的内容可以在其中执行: if myString == string.empty: Regardless, wh......

富含淀粉
今天
19
0
您如何存储未跟踪的文件? - How do you stash an untracked file?

问题: I have changes to a file, plus a new file, and would like to use git stash to put them away while I switch to another task. 我对一个文件进行了更改,再加上一个新文件,并希......

技术盛宴
今天
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部