对iOS 项目“天气”详细步骤

天气步骤

一.在里面申请key , 分析视图,有三个视图

界面 + 业务逻辑层 + 模型层 (View + Controller + Model)

1.头部视图(5个控件 cityLabel、hiloLabel  temperatureLabel、iconView、conditionsLabel(天气描述)

2.每小时的天气情况

3.每天的天气情况


二、创建最表面的tableView ,通过三问一答,有些比如说行数,内容确定,暂且用#warning TODO


三、创建头部视图—>创建Views组——》创建headview  —-创建4个Label+imageview—-》在m 文件中重写父类的initWithFrame方法(如果是init ,必须调用父类的frame)—->定义一些常量 static—>设置frame、字体...    —》label封装 (或者创建分类、labelTool创建工具类 )


四、分类(封装)  创建Utility 组—>选择Object-C  ,File  Type 选择分类, Class—》UILabel  给定label 的frame  ,返回创建好的UIlabel  用类方法 ˚    1 创建citilabel和最高和最低温度label  添加另外的三个  label      —》设置在头部视图


五、发送请求 JSON  格式

1.NSURLSession

a. 单例对象

b. 任务的类型 NSURLSessionDataTask

获取服务器的json 格式 (解析/模型类) 在主视图viewdidload

创建NSURLRequest对象

获取单例对象NSURLSession

创建数据任务对象,发送请求

创建模型类 (头部视图、每小时天气、每天天气)但是有共同点,所有只创建一个模型类

手动执行任务


六.创建模型类model组—>Nsobject,只负责数据解析和提供接口

json  “”, 没有“”就是NSNumber ,用NS如果就是NSString  创建各个属性

每小时/每天的用数组接收  在TRWeatherModel,时在model 中提供一个方法这样跳转  类方法——》类方法+  return一个实例方法

七、到主视图中TRMainViewController    解析的地方  ,用for  in 解析,声明可变数组,进行存储  ——》成功返回解析的数据(三目运算符)—》验证断点108  110

code是200

在控制台输入断点后进一步,再po  self .hourlyArray .count

completionHandler(想再子线程还是主线程中)--在子线程中———》填空

-行数    —设置cell一些属性—》多高  断点验证


八、图片缓存  在controller 中

在主视图控制器,在三问一答  一答那里,如果不是第一行时,图片的缓存—设置每个cell 的图片  出现卡的解决方案 几种方法在V3    一般都是用第三方库,进行图片缓存

图片加载 出现的问题

1.卡

2.第一次加载没有图片显示

3.每次调用cellForIndexPath, 都会重复下载图片

4.问题四:内存增大

图片缓存的逻辑的替代方案 第三方库 (SDWebImage)


另外对MVC的总结

1.感觉主要在Controllerview 层做包括数据(JSON)的解析,数据的处理,图片的缓存,图片的URL

2.在model 层只是在JSON格式做分出和做解析数据的接口

3.View层做了视图的显示,同时提供已改工具类Unity ,进行封装视图

对天气的总结,当然还可以提供定位服务,以及给视图添加新的icon 图像。

如感兴趣可以联系875666040,进行解答

你可能感兴趣的:(对iOS 项目“天气”详细步骤)