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

最新文章

  1. EntityFramework 7 Left Join Where Select 奇怪问题
  2. RestTemplate 使用总结
  3. sass开发过程中遇到的几个坑
  4. java基础--温故而知新 (01)
  5. OC基础--OC内存管理原则和简单实例
  6. ios copy/strong/weak..使用总结
  7. js中常用数组方法concat join push pop slice splice shift
  8. Apache Commons 工具类介绍及简单使用
  9. Nuget 相关
  10. Codeforces Round #396.D
  11. H5动画
  12. PLSQL(2)
  13. HttpClient 解决中文乱码
  14. 【XSY2849】陈姚班 平面图网络流 最短路 DP
  15. 洛谷3084 [USACO13OPEN]照片Photo
  16. 第二步 (仅供参考) sencha touch 使用cmd打包apk
  17. iOS自学-UILabel常见属性
  18. 【剑指Offer面试题】 九度OJ1389:变态跳楼梯
  19. [hihoCoder] #1093 : 最短路径·三:SPFA算法
  20. KineticJS教程(3)

热门文章

  1. C# 返回分页查询的总页数
  2. Linux 关闭正在运行的程序---命令
  3. 将字符串使用md5加密
  4. 新技能 get —— 如何校验 md5(windows)
  5. mahout算法库(四)
  6. JSP中使用EL表达式
  7. 用djbdns为域名解析服务护航
  8. react+react-router+mobx+element打造管理后台系统---react-amdin-element
  9. $routeParams 实现路由指定参数
  10. Linux下守护进程精析