前言
本篇文章主要用来回顾ios学习过程中的一些记录,swift语言和其他语言的特别之处,附加一个天气的小demo
学习记录
swift语言学习阶段:
-
基础语法部分和之前学过的差不多,但swift还是有一些特点
-
swift中有闭包类型,虽然之前也接触过java的匿名函数,但实际中很少使用过
-
swift中的结构体,不同于之前学过语言的结构体例如(c,python)。
-
swift中结构体可以被实例化,可以有函数,与类的区别结构体是属于值类型,类是引用类型。
-
-
swift中属性有存储属性和计算属性,属性中包含计算属性,计算属性提供set,get声明,不同于java里边的setter和getter方法。
-
swift中下标,是之前完全没有见过的新特性。
-
swift中协议,有些类似java里边的接口,但协议使用好像更加灵活,能通过协议定义代理,传输数据。
-
-
初步接触基础swift语言,从中能够看到java,python,js的影子
UIKit学习部分:
-
页面组件包括:label,textfiled,button,textview这些,之前学过html,所以就是一些添加到其中的组件,很好理解。
-
view:UIcollectionView,UIscrollView,UItableView等,相当于已经划分好了一些基本布局,实现了一些基本功能
-
controller:UINavigationController用于实现跳转页面,类似一个栈push进入,pop弹出,UITabBarController用于底部多个页面供选择,点击对应图标页面就实现跳转,UISearchviewController,搜索框,搜索后动作可以用委任模式。
-
手势:点击,触摸,长按,双指点击,单指点击,滑动,拖拽等。给某个view添加手势监听,这些手势触发监听就执行相应的操作。
天气demo:
-
Xcode中新建项目会默认使用main.storyboard,也就是说会将UIViewController作为项目进入的第一个页面。
-
不使用storyboard,纯代码写页面,自定义首先进入的页面需要删除main.stoyboard并做在AppDelegate和SceneDelegate中做一些修改
-
-
Weather类作为天气对象,用于存储的天气数据
-
Service层中requestService用于实现从api获取并解析数据
-
View层中,WeatherView,一个继承scrollView的类,用于天气数据和图片,图表
-
Controller层:
-
app进入的第一个首页是NewPageViewController,功能包括:添加新的城市天气,删除当前城市天气,存储和取出数据,翻页。
-
MyWeatherController,用于将weather对象中的数据赋值给WeatherView的组件上,实现绘制图表,刷新功能
-
SearchViewController,用于输入要添加的新城市,判断输入是否合法,转换输入的中文,用英文获取天气数据。
-
-
用到的三方库:
-
Almofire:直接AF.request(url)能够很方便的发出请求
-
SwiftJSON:很方便的解析获取的json数据,不用每一层都转化为[string:any]的方式
-
SwiftPullToRefresh:这个三方库是在scrollView中加入扩展,很方便的实现下拉刷新或者上拉刷新
-
AAInforgraphics:这个三方库是用来制作各种图表,非常方便,而且在github上有中文文档,各种表格制作的简单教程。d
-
-
需要改进的地方:
-
不应该把那个城市名称中文和英文的对照方法类里边,可以新建一个.plist文件。这因为在写的时候想过java开发里边有.yml和.properties文件,想有没有类似的文件,后面才了解到其实就是plist文件。
-
存储数据应该直接存储wether对象,而不是存储一个城市名,下次打开用城市名再去请求详细数据,这样就很慢,前提是weather对象继承codeble协议。
-
刷新的图标应该隐藏。
-
-
天气demo任务细化: