解读AFNetworking中Demo的MVC

Demo的下载地址:AFNetworking下载

打开Demo:

现实的功能,就是一个简易的微博timeline界面:

项目预览:

用到的第三方:AFNetworking 和 UIKit+AFNetworking

功能:用户图像(先显示默认图,在加载图片),用户发的内容,下拉刷新。

C层:

发一个请求:(告诉M 要做什么)

- (void)reload:(__unusedid)sender {
    self.navigationItem.rightBarButtonItem.enabled = NO;

    NSURLSessionTask *task = [PostglobalTimelinePostsWithBlock:^(NSArray *posts, NSError *error) {
        if (!error) {

             self.posts = posts;
            [self.tableViewreloadData];
        }
    }];

    [UIAlertViewshowAlertViewForTaskWithErrorOnCompletion:task delegate:nil];
    [self.refreshControlsetRefreshingWithStateOfTask:task];
}

M 做完之手,产生多个post对象,放到self.post数组里面。C拿到M给的post对象,去更新V

cell.post = [self.postsobjectAtIndex:(NSUInteger)indexPath.row];

M层:

M 收到C的请求:去请求数据,解析,转换成post对象,然后通过block返回给C

+ (NSURLSessionDataTask *)globalTimelinePostsWithBlock:(void (^)(NSArray *posts, NSError *error))block {
    return [[AFAppDotNetAPIClientsharedClient] GET:@"stream/0/posts/stream/global"parameters:nilsuccess:^(NSURLSessionDataTask * __unused task, id JSON) {
        NSArray *postsFromResponse = [JSON valueForKeyPath:@"data"];
        NSMutableArray *mutablePosts = [NSMutableArrayarrayWithCapacity:[postsFromResponse count]];
        for (NSDictionary *attributes in postsFromResponse) {
            Post *post = [[Postalloc] initWithAttributes:attributes];
            [mutablePosts addObject:post];
        }

        if (block) {
            block([NSArrayarrayWithArray:mutablePosts], nil);
        }
    } failure:^(NSURLSessionDataTask *__unused task, NSError *error) {
        if (block) {
            block([NSArrayarray], error);
        }
    }];
}

V层:

V:拿到C给的数据,来展示出来,这一步就是更新UI

- (void)setPost:(Post *)post {
    _post = post;

    self.textLabel.text = _post.user.username;
    self.detailTextLabel.text = _post.text;
    [self.imageViewsetImageWithURL:_post.user.avatarImageURLplaceholderImage:[UIImageimageNamed:@"profile-image-placeholder"]];

    [selfsetNeedsLayout];
}

其中 :

    [self.imageViewsetImageWithURL:_post.user.avatarImageURLplaceholderImage:[UIImageimageNamed:@"profile-image-placeholder"]];

这句代码是对UIImageView的扩展,在UIKit+AFNetworking可以直接使用,非常方便。

我的微信公众号 iOS开发 :

iOSDevTip
时间: 2024-10-14 05:25:24

解读AFNetworking中Demo的MVC的相关文章

NSXMLParser 在AFNetworking中的使用

好吧,一下博文转自:http://www.tuicool.com/articles/Qnmu6f 对xml进行解析的标准有两种:sax以及dom. 首先这两种标准并不是针对java的,他们在各种语言环境下都可以实现.dom是真正的国际标准.sax是事实的标准,它不由任何商业组织维 护,而是由一个非商业的组织在运作.就像iso7层模型和tcp/ip一样,虽然sax不是正式的标准,但是一点不影响其在xml解析领域的地位. dom实现的原理是把整个xml文档一次性读出,放在一个树型结构里.在需要的时候

关于AFNetworking中header的bug问题

关于AFNetworking中header的bug问题 [摘要:AFNetworking那个正在ios开辟中便未几道了,网上一搜一大推,然则详细用法我便没有道了,偶然间我会整顿一下详细的一些用法.本日首要接头一下我正在应用傍边闭于header上里的一些bug问] AFNetworking这个在ios开发中就不多说了,网上一搜一大推,但是具体用法我就不说了,有时间我会整理一下具体的一些用法.今天主要讨论一下我在使用当中关于header上面的一些bug问题. 首先关于一个登录保持,我和服务器人员通过

[cocos2dx]cocos2dx-lua中的框架MVC

MVC简介 MVC,即Model View Controller.Model(模型),一般负责数据的处理:View(视图),一般负责界面的显示:Controller(控制器),一般负责前端的逻辑处理.拿一款手机游戏来说,界面UI的显示.布局等就是View负责:点击了按钮,手势的滑动等操作由Controller来处理:游戏中需要的数据资源就交给Model. 其中cocos.Controller.Model.View这个不用多说,Event里面保存的全局消息类型,Managers是用于管理游戏中的东

解读Unity中的CG编写Shader系列一

CG=C for Graphics  用于计算机图形编程的C语言超集 前提知识点: 1.CG代码必须用 CGPROGRAM ... ENDCG括起来 2.顶点着色器与片段着色器的主函数名称可随意,但需要再#pragma vert 与#pragma fragment中声明并且与主函数名完全匹配,shader才会找到入口 3.float4是一种压缩数组,float4 vert与float vert[4]严格意义上讲不同,虽然都是存放4个float,但float4作为向量类型做点乘.内积等处理更快速

解读Unity中的CG编写Shader系列四——unity中的圆角矩形shader

上篇文章中我们掌握了表面剔除和剪裁模式 这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做成圆角矩形 例3:圆角矩形Shader 好吧我承认在做这个例子的时候走了不少弯路,由于本人对矩阵的知识掌握已经悉数还给老师,所以一开始用了一些笨办法计算圆角矩形区域. 我们知道TEXTCOORD0是一个以对象为坐标系的坐标,并且范围在该坐标的第一象限,取值为(0,0)到(1,1) 那么我们把每一张图片都看做一张1X1大小的矩形 我们要在1X1大小的矩形中擦除4个角,应该是这样: 以左上角

iOS AFNetworking中cookie的读取与设置

参考: http://blog.csdn.net/zhaoxy_thu/article/details/20532879 实际上AFNetworking中并没有专门针对cookie封装的代码,但是由于它底层使用的是NSURLRequest,所以可以通过NSHTTPCookieStorage来操作cookie. 读取及保存cookie: NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[

IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3

本文主要介绍在IIS5.1.IIS6.0.IIS7.5中安装配置MVC 3的具体办法! 正文: IIS5.1 1. 安装Microsoft .net FrameWork 4.0安装包; 2. 安装ASP.NET MVC 3; 3. 在IIS中发布网站,创建虚拟目录,ASP.NET版本选择4.0.30196: 4. 添加MVC的解析: 右击IIS中的虚拟目录选择“属性”-“虚拟目录”-“配置”-“映射”-“添加”,配置如下: 可执行文件:C:\WINDOWS\Microsoft.NET\Frame

如何在Web项目中配置Spring MVC

要使用Spring MVC需要在Web项目配置文件中web.xml中配置Spring MVC的前端控制器DispatchServlet 1 <servlet> 2 <servlet-name>SpringMVC</servlet-name> 3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 4 <!-- 默认所对应的配置文件是

.Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能

.Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能 我的项目需求是:在.net4.5中用mvc5实现上传xml文件,后台实时导入数据库时传到前台进度,进度条实现动态在走. 网上看了很多实现此需求的方法(服务器轮训向客户端发送消息)ajax.webscoket.singal等. 之前的代码是前段用定时器ajax去访问后台的进度数据.然后给进度条赋值.发现有时候ajax请求总出现pending的状态. 之前的缓存实现代码: var cc=true;