毕业设计(论文)-基于iOS跑步软件的设计与实现.doc_第1页
毕业设计(论文)-基于iOS跑步软件的设计与实现.doc_第2页
毕业设计(论文)-基于iOS跑步软件的设计与实现.doc_第3页
毕业设计(论文)-基于iOS跑步软件的设计与实现.doc_第4页
毕业设计(论文)-基于iOS跑步软件的设计与实现.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

盐城师范学院毕业设计盐 城 师 范 学 院毕业设计基于iOS跑步软件的设计与实现学生姓名 学 院 信息工程学院 专 业 网络工程 班 级 12(1) 学 号 指导教师 2016 年 5 月 16日第 4 页 ,共 27 页基于iOS跑步软件的设计与实现摘 要现今,越来越的多人喜欢跑步,骑行等运动,各种运动类型的应用软件也应运而生。本项目从社交与运动结合的方面入手,让用户能与好友分享自己跑步的心得要领与成绩,随时随地更新动态。应用分为登录用户和匿名用户,登录用户有两个主要功能模块:社交功能模块、运动功能模块。社交功能模块中,通过新浪开放平台的API接口来完成。运动功能模块中,结合iOS自带的MapKit与HealthKit实现绘制用户的运动轨迹并且统计用户当天的步数。采用iPhone设备作为本项目的基础平台,完成与用户进行交互的主要任务,以及数据信息的展现工作。这样不但缩减了开发和实现的成本,而且提高可系统的易用性、可靠性,也带来了功能上更高的可扩展性。【关键词】跑步软件;iOS;社交;网络请求全套设计加扣3012250582 Running software design and implementation based on iOSAbstractNowadays, more and more people like running, cycling and other sports, and kinds of sports type of application software also arises at the historic moment. My project from the aspects of social combined with exercise, allows users to share their running with friends essentials and grades, update dynamically anytime and anywhere.Application is divided into the logged in user and anonymous user, login user has two main function modules: social function module, the motor function module. Social function module, through sina open platform API interface to complete. Motor function in the module, the combination of iOS bring MapKit map users with HealthKit steps of trajectory and users of the statistics of the day.Using the device as the objective foundation platform, the main task of the complete interact with the user, and data information in the present work. Such not only reduced the cost of development and implementation, and improve the system usability, reliability, also poses a function on a higher extensibility.Keywords Running software;iOS;Social;Network request目 录1绪 论11.1研究背景及意义11.2设计报告的主要内容与结构12需求分析与总体设计12.1业务描述12.2需求分析22.2.1功能需求22.2.2性能需求33相关技术介绍33.1iOS框架33.2开发环境及语言43.2.1 Xcode开发环境43.2.2 Objective-C语言43.3内存管理43.4 MVC架构54 系统详细设计54.1登录用户54.1.1 社交功能54.1.2 运动功能64.2匿名用户75 系统实现75.1 登录功能实现95.2 社交功能实现125.2.1 运动圈功能模块实现125.2.2消息功能模块实现165.2.3好友功能模块实现165.3 运动功能实现175.3.1 跑步功能实现175.3.2 个人信息界面实现206总结25参考文献27致 谢281绪 论1.1研究背景及意义随着人们生活水平的提高,越来越多的人注意自己的身体健康。一系列的研究表明,缺乏运动与许多的疾病有这密切的关系,世界卫生组织估计,全球因缺乏运动而引致的死亡人数,每年超过二百万1。注意:不运动,会使身体的免疫能力下降,某些疾病和病毒不能得到有效免疫而诱发猝死。还有一个重要的情况,如果小孩不进行足够多的体育锻炼的话,那他们的大脑发育也不会很好,就影响到智力稍微不明显的低下。跑步就是最简单最有效的运动方式之一,然后大多数人对跑步却很难坚持下去,因为跑步缺乏对抗性,技巧性,完成跑步之后的成就感也比较低2。因此,如何增强跑步的趣味性,增强跑步完成的成就感,激励人们坚持跑步下去,达到保持健康的目的就成了一个课题。国内比较流行的跑步软件有咕咚,悦跑圈等,都是比较成熟的软件,课题也有了一个模板。1.2设计报告的主要内容与结构本文详细介绍了课题的设计与开发过程,包括iPhone开发工具的介绍使用、程序功能与需求分析、相关技术介绍、程序各功能的设计与实现等。本文总共有6个部分:a.介绍了课题的研究背景、研究现状、研究内容及研究意义,并给出文章的组织结构。b.分析系统的业务需求、需求分析以及概要设计。对分析子系统的功能与非功能需求进行分析,提出了系统的概要设计思想方案。c.相关技术介绍。重点介绍本文所述系统相关的技术,包括概述,面向对象的语言,的开发环境,以及开发的一般流程等。d.各模块的详细设计。介绍各个模块所用的相关知识,以及设计思路,在系统基础上进行详细的介绍。e.应用的测试与总结。总结了基于苹果手机的爱运动应用程序的整体设计和实现思路,在程序的编译过程中遇到的阻碍和未来对该系统进行进一步的提升的一些思考。2需求分析与总体设计2.1业务描述从整个程序来分析,应用从用户角度出发,考虑了用户想要了解以及注重的数据信息。事实上,对跑步路线的准确定位,运动圈的良好管理以及用户想要查看的内容详情显示,都会吸引跑步爱好者的眼球,从而给App带来用户量。 整个项目包括两个功能模块,其中社交功能模块包括了运动圈、消息、好友三个部分,可以看到朋友发的动态,可以进行评论,分享,点赞等等。在运动模块中,记录运动时产生的数据,可以查看个人信息、历史记录、步数统计等。2.2需求分析移动端开发的目的是为了便于用户的使用,摆脱时间地点以及硬件的限制。开发平台从传统的PC到可移动平台,这对开发过程造成了一定的变化3。现今,Android和iOS成为智能机的主流系统,而移动平台的硬件也有了很大的提高。下面就从iOS平台上的跑步软件做简单的分析。2.2.1功能需求本项目主要完成基于iOS的跑步软件的客户端开发,客户端应具备社交功能和运动功能两个部分。由于缺少服务器设备,所以社交部分采用新浪的开放平台,用微博的接口来实现本项目的社交功能。下面是应用功能模块图,如图2-1所示:图2-1 应用功能需求示意图(1) 登录用户a. 社交功能:社交功能中有三个部分:运动圈、好友、消息。在社交功能中可以查看好友动态、分享好友动态以及评论好友动态,当然还可以自己发动态。同时,可以查看好友列表以及查看消息列表。b. 运动功能:运动功能中有两个部分:运动数据记录以及个人信息两个部分。运动数据记录功能中,记录用户跑步的各种数据存储到Coredata中。个人信息部分展示跑步记录、步数统计、社交信息。(2)匿名用户用户没有登录的情况下,只可以使用运动功能,而且在个人信息部分中不显示头像、粉丝等信息。2.2.2性能需求系统的性能要求跟系统所提供的功能是密不可分的,此外,作为一款iOS软件,系统也应当提供一个良好的用户体验。a. 功能完整性:应用的各项功能应当是完整的,即所有前面所有功能有要求全部具备。b. 运行流畅性:系统在运行的时候必须十分的流畅,除网络状况外不可以有卡顿现象,其他如遇需用户等待的情况外,应当让用户知情。c. 应用可扩展性:随着技术的发展,跑步软件必然会添加新的功能,应用在开发过程中要有这方面的考虑,为应用的升级扩展留下余地。d. 良好的用户体验:iPhone手机以用户体验为卖点,所以iOS应用也应当提供丰富的用户体验。页面上设计要科学合理,并在合适的地方利用提醒,警告等方式帮助用户操作。3相关技术介绍本文所述为基于iOS的跑步软件的设计与实现论文的相关技术,下面对其中主要的技术,也是iOS开发人员必须具备的技术做一个简单的介绍:a.iOS框架;b.开发环境及语言;c.内存管理;d.MVC架构;3.1iOS框架iOS是苹果公司移动端产品上的操作系统,iPhone OS是它的前身。iOS与Mac OS X作为同一家公司的产品有着相同的基础架构和底层技术,然而iOS又是根据移动设备的特点来设计的,所以iOS跟Mac OS X也有着很大的区别。iOS系统架构层次图,如图3-1所示:图3-1 iOS的系统架构层次 从图片上可以看出iOS大体上有四层:核心操作系统层,核心服务层,媒体层以及可触摸层4。核心操作系统层:iOS系统架构的最底层为核心操作系统层,它支撑了整个操作系统的运行,并且可以直接个硬件进行交互;核心服务层:核心操作系统层的上一层叫做核心服务层,可以通过这个与iOS的一些服务进行交互,如:SQLite,Networking,Core Location等等;媒体层:顾名思义,可以通过媒体层在应用程序中进行音频视频的录制,图形的描绘,以及制作基础的动画效果。可触摸层:最上面一层是可触摸层,这一层大多数框架是直接与用户界面有关,所以也可以说它是负责用户在iOS设备上交互操作。3.2开发环境及语言3.2.1 Xcode开发环境Xcode是一种非开源的集成开发环境,大多数iOS开发工作都是从创建Xcode项目开始的5。Xcode中也集成了模拟器功能,在不需要真机的情况下测试应用程序。通常,模拟器不用直接启动,在Xcode运行或者是在调试的时候,模拟器会自动启动。另一方面,iPhone/iPad模拟器并不是完美的,它无法提供一些传感数据(GPS,加速器,陀螺仪等)。所以,在开发过程中还是需要用真机进行测试来确保程序的运行与预期一致。3.2.2 Objective-C语言Objective-C语言可以用来来编写iOS应用,它是由C语言扩展而来的面向对象语言,这样就允许了它使用任何的原始的C语言的代码,有人形容它是覆盖在C语言上的一层薄纱。Objective-C面向对象的对打的特点就是消息传递模型,在这一点上与当今主流的C+语言风格迥异,两者的差别在于程序如何看待呼叫方法/传递消息这个动作上。在Objective-C中,类与消息的关系没有那么的密切,所有的方法都被看做是对消息的回应,而方法则被看做是对类的发送消息。Objective-C中协议的概念也与Java中有所不同,在Objective-C中一个类可以在不声明的情况下实现这个协议所包含的的方法,也就是说实质上符合这个协议。Objective-C是一种弱类型的语言,并且只支持单一继承,不支持多继承。3.3内存管理Objective-C提供了三种内存管理方式:manual retain-release (MRR,手动管理),automatic reference counting (ARC,自动应用计数),garbage collection (垃圾回收机制)。在iOS中不支持垃圾回收6。1. 内存管理原则(应用计数)创建对象后,新建的对象的retain计数为1。当对象得到一个拥有方的时候,即对象被引用的时候会收到retain消息计数加1。当对象失去一个拥有方时,会受到release消息从而计数减1。当计数为0时,对象会自动释放,解除占用的内存。2. AutoReleasePool自动释放池可以理解为是一种延时释放技术:即通过发送autorelease消息,向自动释放池登记,表明将来会在pool销毁时一并发送release消息释放自己。3.4 MVC架构MVC英文全称是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑7。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。iPhone上的MVC架构有以下几种类型:1. 视图:UIView类的子类以及UIViewController类提供了视图的组件。2. 控制器:Delegate、目标操作以及通知是控制器行为的三种关键技术。Delegate用来传递UIKit类相应用户交互,在设置某个委托时让对象传递交互信息,而让委托复制处理这些交互事物。目标操作(target action):这是一种比较低级的交互方式,通常只有在实现UIControl类的子类的时候才会遇到。通知:支持应用程序中的对象的交互以及与iOS系统上其他应用程序的通信。3. 模型:模型方法通过数据源换和数据含义等协议提供数据,需要实现由控制器出发的回调方法。4 系统详细设计系统的登录功能,采用了Sina的OAuth2.0授权方法8。点击登录之后,跳转到授权页面,在这个web页面上进行登陆,如果没有账号的话也可以在这个页面进行注册。长时间没有登录的用户会给出登录已过期重新登录的提示,这时候用户需要再次进行登录。4.1登录用户4.1.1 社交功能(1)运动圈UI设计是应用的特别重要的一部分,起到了对吸引更多的用户起到不可替代的作用。一个良好的用户体验很大的程度上取决于界面设计,可以很清晰的引导用户以及让用户清晰的知道自己所看到的界面的含义。在这一界面中,信息以列表的形式展示,可以上下滑动。同时,当用户看到某一条感兴趣的信息的时候,可以点击查看详情,也可以点击下面的评论,还可以点击分享将这一条信息分享到其他平台如朋友圈等。在这一界面中支持下拉刷新,新拉取到的信息会展示在整个界面的最上部,方便用户查看。整个信息包含,用户的昵称、头像、发布时间、来源以及内容。发布时间按照一定格式,参考sina微博的做法。当别发的信息之中有图片或者动态图的时候,可以点击查看大图,并且支持左右滑动查看。例如,当有九张图片时,点击第五张图片,大图显示依然在第五张,左右滑动查看其他图片。当动态图没有加载完成时,给出提示框,显示加载进度。(2)消息 这个模块中,只有三个部分,如图中所示,当点击其中一个cell的时候,会跳转到相应的控制器中。第一部分会展示出所有的我的人,同时用户别人的那条信息也将会展示在这一部分中。在评论中也会展示出评论人,评论内容,以及评论的那条信息,当然也同样有着头像、时间等数据的展示。由于sina没有开放评论详情的接口,在这里不做点击查看详情事件。(3)好友在这个模块中,可以看到自己关注的跑友以及自己的粉丝。整体分为两个部分,第一部分可以看到自己关注的人还有关注自己的人分别有哪些另一部分可以看到自己所有的好友。点击关注后,只看得到自己关注的人,而粉丝则只能看到关注自己的人。点击某一个人的时候,会进入到好友详情界面,当中包括头像、背景图片、昵称、粉丝、关注、所在地以及签名。进入多层界面时,允许侧滑手势返回。4.1.2 运动功能(1)跑步当用户进入这一界面的时候,首先展示一个地图显示用户当前所在的地址,在屏幕下方给出一个开始跑步的按钮。点击跑步按钮时,跑步按钮变成停止按钮,导航栏下方展示出一个信息栏,给出用户当前跑步的信息,包括时速、配速、时间以及里程,并且数据实时更新。用户开始跑步后,在地图上展示出用户运动的轨迹,以黄色的线在地图上画出来。运动完成后,点击停止按钮,用户的运动轨迹会自动缩放直到全部放倒屏幕中为止,上方的信息提示框消失,同时停止按钮变成完成按钮。点击完成后,保存所有数据到本地,重置所有的信息。(2)个人信息在这个模块当中可以看到自己的一些信息,点击头像之后,可以更换自己的头像,可以选择从本地上传或者从摄像头拍照获取,成功之后会直接替换。点击历史纪录后,在一个新的界面显示自己所有的跑步记录,给出一个小图显示运动轨迹,并且在后面显示该次跑步的信息。进行向左侧滑的时候,将显示删除按钮,由于没有服务器的支撑,删除记录之后将无法恢复。点击查看详情,全屏展示出带有轨迹的地图全貌,附加有跑步信息。进入到记录的详情界面后,通过右上角的分享按钮,可以将此次记录分享到微信等各个平台,随时与好友进行分享。在今日步数这一栏中,可以看出当日跑步或者走路的步数,按照目标1000步来计算出百分比,在百分比环中展示出来。退出或者登陆功能,用户没有登录的情况下,将无法使用除跑步这一基本功能外的其它所有功能,都给出相应的警告框。用户点击登陆之后,将进入授权页面,由于这个项目中是采用的新浪微博的api接口,登陆账号为微博账号,没有账号的支持网页注册。4.2匿名用户在用户没有登录情况的下不允许使用社交功能,给出相应的提示。允许使用运动功能。(1) 跑步这个功能与用户登录后的功能相同,作为整个应用的基本功能,同时也为了有一个好的用户体验,这个功能没有区别是否为登录用户。(2) 个人信息这个部分中历史纪录和步数统计与登录用户相同,展示跑步记录以及统计出当日步数的总和。当然,在没有登录的情况下,头像显示默认图片,并且点击之后不再更换头像,会直接跳转到登录界面。同时,粉丝以及关注数量显示为0。5 系统实现系统项目文件夹如图5-1所示,在图中可以看出,在classes文件夹中有七个子文件夹,分别对应 了五个模块与整体框架以及授权登录模块。同时,在每个模块下面分别有Model,View,Controller即MVC模式。在model中存放了网络请求来的数据,并且分配给需要用到数据的界面;view中存放自己定义的类,如cell等以便在工程中重用;controller中放了每个界面,例如主页下的Controller文件夹下放了CHomeViewController,CommentViewCntroller,CMicroDetailViewController分别对应了运动圈主页,评论界面以及详情界面,如图5-2所示;图5-1 系统项目文件夹图5-2 子文件夹示意图整个工程开始之前,先搭建一个有着Navigationcontroller和TabBarController的一个整体框架,满足头部title与底部title相同。点击底部button 的时候,不同模块切换。具体代码如下:- (void)viewDidLoad super viewDidLoad; CHomeViewController *home=CHomeViewController allocinit;/初始化控制器home,并且给home控制器分配内存 self addOneChlildVc:home title:运动圈 imageName:tabbar_home selectedImageName:tabbar_home_selected; /用自己写的方法添加tabbar的title与图片,并添加home控制器为tabbar的自控制器 CMessageViewController *message=CMessageViewController allocinit;/初始化控制器message,并且给message控制器分配内存 self addOneChlildVc:message title:消息 imageName:tabbar_message_center selectedImageName:tabbar_message_center_selected;/用自己写的方法添加tabbar的title与图片,并添加message控制器为tabbar的自控制器 UIStoryboard *story=UIStoryboard storyboardWithName:CRun bundle:nil;/将storyboard中的CRun控制器取出 CRunViewController *run=story instantiateViewControllerWithIdentifier:CRun;/使用story初始化run控制器 self addOneChlildVc:run title:跑步 imageName:tabbar_running selectedImageName:tabbar_running_selected;/用自己写的方法添加tabbar的title与图片,并添加run控制器为tabbar的自控制器 CDiscoverViewController *discover=CDiscoverViewController allocinit;/初始化discover控制器并分配内存 self addOneChlildVc:discover title:好友 imageName:tabbar_friends selectedImageName:tabbar_friends_selected;/用自己写的方法添加tabbar的title与图片,并添加discover 控制器为tabbar的自控制器 CProfileViewController *profile=CProfileViewController allocinit;/初始化profile控制器并给profile控制器分配内存 self addOneChlildVc:profile title:我 imageName:tabbar_profile selectedImageName:tabbar_profile_selected;/用自己写的方法添加tabbar的title与图片,并添加profile控制器为tabbar的自控制器在iOS开发中若需要用到一个类,则需要先给他分配一个内存,即alloc9。在TabBarController中添加各个子控制器,同时将NavigationController添加微姿控制器,这样就可以实现拥有头部和底部的控制器,所用的方法是:addChildViewController。同时也用到了自己封装的方法添加子控制器,同时设置title,以及底部图片,用到的方法是- (void) addOneChlildVc:(UIViewController *)childVc title:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName;添加完成后,点击底部tabbar上的按钮就可以进入相应的界面。5.1 登录功能实现登录功能实现的代码放在OAuth02文件夹下,请求新浪微博的web授权页面进行授权。授权之前,需准备请求的必要数据放到一个字典中,而有一个必要参数code需要自己进行拼接。登录功能运行示意图如图5-3所示:图5-3 登录功能运行示意图实现的具体代码如下:/使用webView的回调方法,从request中截取必要参数code-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(nonnull NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType NSString *urlString=request.URL.absoluteString;/取出request的完整的URL的string NSRange range=urlString rangeOfString:code=;/设置code所在位置的range if (range.length) NSString *subString=urlString substringFromIndex:range.location+range.length;/拼接code,并用于参数配置。 self accessOauthWithCode:subString;/配置参数并且发送请求 return NO; return YES;配置请求参数并且发送授权请求,必要参数包括:ID、secret、grant_type、code。请求完成之后,得到的token等参数存储到coredata中并跳转到主页。实现代码如下:-(void)accessOauthWithCode:(NSString *)oCode NSMutableDictionary *dic=NSMutableDictionary allocinit;/初始化可变字典dic dic setValue:IWB_APP_ID forKey:IWB_KET_APP_ID; dic setValue:IWB_APP_SECERT forKey:client_secret; dic setValue:authorization_code forKey:grant_type; dic setValue:oCode forKey:code;dic setValue:IWB_REDIRECT_URI forKey:redirect_uri;/设置请求的必要数据,包括ID,secret,type和code;/采用post请求方法 manager POST:IWB_TOKEN_URL parameters:dic success:(AFHTTPRequestOperation *operation, id responseObject) NSDictionary *dic=responseObject; AppDelegate *app=UIApplication sharedApplication.delegate;/继承appdelegate UserInfo *entity=nil; NSArray *array = app.coreDataManager getCoreDataWithEntityName:UserInfo;/实例化名为UserInfo的数据模型,放到数组array中 if (array.count) entity=array objectAtIndex:0; else entity = NSEntityDescription insertNewObjectForEntityForName:UserInfo inManagedObjectContext: app.managedObjectContext;/将新获取到的token插到原有数据 entity.access_token=dic valueForKey:access_token; entity.expires_in=dic valueForKey:expires_instringValue; entity.uid=dic valueForKey:uid; NSDate *date=NSDate date; entity.expiresDate=date;/存储的数据有token、expires、uid、date;/将得到的数据存储到CoreData中,成功后跳转界面 if ( app.coreDataManager saveCoreDataWithEntity) CTabBarViewController *tabVc=CTabBarViewController allocinit; self presentViewController:tabVc animated:YES completion: CGlobal sharedInstance.isLogin=YES; ;/present一个tabVc控制器,完成之后将登录值设为yes failure:(AFHTTPRequestOperation *operation, NSError *error) NSLog(error:%,error); ;5.2 社交功能实现5.2.1 运动圈功能模块实现运动圈功能模块运行示意图如图5-4,5-5所示:图5-4 运动圈功能模块运行示意图(登录) 图5-5 运动圈功能模块运行示意图(未登录)新浪相关主要是数据的获取与处理,数据获取后有界面的相互关系这两点需要注意。在这个部分采取来MVC模式来写,这样有助于代码的管理。新浪数据的请求代码如下:-(void)loadNewStatues self.tabBarItem.badgeValue=nil; AppDelegate * app = UIApplication sharedApplication.delegate;/继承AppDelegate的代理 NSEntityDescription * entity = NSEntityDescription entityForName:UserInfo inManagedObjectContext:app.managedObjectContext;/将coredata中名为UserInfo的数据模型取出,并且实例化为OC对象 NSFetchRequest * request = NSFetchRequest alloc init;/初始化一个请求,用来请求caoredata数据 request setEntity:entity; NSError *error = nil; NSArray * array = app.managedObjectContext executeFetchRequest:request error:&error;/将请求得到的数据放入数组array中 if (array.count 0)/如果取出的数据中存在数据,则进行数据请求 UserInfo * oauth = array objectAtIndex:0; AFHTTPRequestOperationManager *mgr = AFHTTPRequestOperationManager manager;/初始化网络请求对象mgr NSMutableDictionary * dic = NSMutableDictionary dictionary; dic setValue: oauth.access_token forKey:access_token;/取出token if (_statusFrames.count) CStatusFrame * statusFrame = _statusFrames objectAtIndex:0; CMomentsStatus *status = statusFrame.status; dic setValue:status.idstr forKey:since_id;/设置请求头 /用AFNetWorking中的方法进行网络请求,得到的数据为responseObject,然后将数据传给需要的控制器 mgr GET:IWB_FIRENDS_URL parameters:dic success:(AFHTTPRequestOperation *operation, id responseObject) NSArray * items = responseObject valueForKey:statuses; NSMutableArray * statusArray = NSMutableArray array; for (NSDictionary * sub in items) CStatusFrame *statusFrame = CStatusFrame alloc init; CMomentsStatus *status =CMomentsStatus allocinit; NSString *time =sub valueForKey:created_at; NSString *source = sub valueForKey:source; CUser *user =CUser allocinit; NSDictionary *userInfo =sub valueForKey:user;/取出得到的数据,并刷选自己需要的信息 status.created_at = time; status.source = source; status.idstr = sub valueForKey:idstr; status.text = sub valueForKey:text; status.reposts_count = sub valueForKey:reposts_count; ments_count = sub valueForKey:comments_count; status.attitudes_count = sub valueForKey:attitudes_count; status.pic_urls = sub valueForKey:pic_urls; user.idstr = userInfo valueForKey:idstr; = userInfo valueForKey:name; file_image_url = userInfo valueForKey:profile_image_url; status.user = user; statusFrame.status = status; statusArray addObject:statusFrame;/传递给用到数据的相关类 NSIndexSet *indexSet = NSIndexSet indexSetWithIndexesInRange: NSMakeRange(0, statusArray.count) ; self.statusFrames insertObjects:statusArray atIndexes:indexSet;/刷新得到的数据插入到数据数组中 self.tableView reloadData;/刷新表格 self.refreshControl endRefreshing;/刷新结束 failure:(AFHTTPRequestOperation *operation, NSError *error) NSLog(%,error); MBProgressHUD showError:网络不给力啊;/请求失败给出错误提示 self.refreshControl endRefreshing; ; 在这里,通过AFNetWorking来实现请求数据,请求的必要参数为access_token,这个参数可以通过授权时存储的信息获得即oauth.access_token10。在coredata中取token用到了AppDelegat这个类的managedObjectContext属性。在AFNetWorking这个框架中,通过其中的mgr GET:IWB_FIRENDS_URL parameters:dic success:(AFHTTPRequestOperation *operation, id responseObject);方法来进行get请求,而responseObject就是请求得到的数据,得到数据后,将数据存入自己定义的类中。自定义的各个数据类型字段如下:/* 字符串型的微博ID */property (nonatomic, copy) NSString *idstr;/* 微博信息内容 */property (nonatomic, copy) NSString *text;/* 微博创建时间 */property (nonatomic, copy) NSString *created_at;/* 微博来源 */property (nonatomic, copy) NSString *source;/* 转发数 */property (nonatomic, assign) NSNumber *reposts_count;/* 评论数 */property (nonatomic, assign) NSNumber *comments_count;/* 表态数(赞) */property (nonatomic, assign) NSNumber *attitudes_count;/* 微博作者的用户信息字段 */property (nonatomic, strong) CUser *user;/* 微博配图地址。多图时返回多图链接。无配图返回“” */property (nonatomic, strong) NSArray *pic_urls;当动态中有图片的时候,需要实现在ImageView上添加点击事件的方法为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论