天气预报与穿衣指数推荐系统

 2022-01-17 11:01

论文总字数:22985字

目 录

1 绪论 6

1.1 研究现状 6

1.2 技术背景 7

1.3 研究意义 7

2 关键技术概述 7

2.1 iOS应用构成 7

2.2 iOS应用启动原理 8

2.3 框架简介 8

2.3.1 AFNetworking框架 8

2.3.2 MJRefresh框架 9

2.3.3 SDWebImage框架 10

2.3.4 其他框架 10

3 系统分析 10

3.1 可行性分析 10

3.2 需求分析 11

3.2.1 用户需求分析 11

3.2.2 功能需求分析 11

4 整体框架设计 12

4.1 布局设计 12

4.2 架构模式 12

4.3 功能结构 13

4.4 数据存储 14

4.4.1 数据库设计 14

4.4.2 其他存储方式 15

5 系统实现 17

5.1 位置获取 17

5.2 天气信息展示 19

5.3 头条新闻 22

5.4 位置列表 23

5.5 闪屏广告 24

5.6 清除缓存 25

5.7 主题广场 26

6 软件测试 28

6.1 界面测试 28

6.2 健壮性测试 28

6.3 性能测试 28

7 结论 28

参考文献 30

致谢 31

天气预报与穿衣指数推荐系统

陈亚伦

,China

Abstract:With the rise of the mobile Internet, the usage of smart phones has become more popular. People’s reliance on mobile app applications has become more apparent. A variety of application programs make people’s lives convenient. Weather information is also an indispensable element in people's lives. The weather app is very important. This graduation design is based on the iOS system. Based on the requirements analysis and functional design, the “Weather Today” application is developed using Objective-C language. The main functions include current city location, target location search, weather information display, clothing index, interface sharing, and software theme selection. In addition, the implementation methods of the city search and weather query module are also analyzed and pseudocode descriptions are given for key algorithms.

Key words:iOS system; Weather forecast App; Objective-C programming language

绪论

1.1 研究现状

智能手机的发展如火如荼,形形色色的移动软件为我们的日常生活提供了诸多方便。当下主流的手机操作系统平台主要有iOS和Android,而iOS系统凭借其丝滑、流畅的操作,简单、实用的界面收获了大量的用户。因此,在iOS系统之上开发软件是极其有前景,并且会有诸多用户支持使用的。2018年3月30日,iOS11.3更新正式推送,包括稳定性提升和错误修复。除了可以刷公交卡之外,还带来了ARKit 1.5、新Animoji表情、个人健康管理、iPhone电池健康(Beta版)等重大升级[1]。并且iOS系统在中国的占比迅速增加,类比安卓系统,最新版本也同样极具优势。这样开发者不必拘泥于旧的系统版本,可以直接使用最新SDK。

图1 iOS系统各版本占比

根据iOS系统各版本占比图可知,iOS 最新版本11.2.6已经将近占据整个iOS系统版本份额的五分之一。除此之外,由于我国对移动通信行业的大力支持,使早早进入了4G时代,并且5G即将来临。网速、网费已经不再是制约移动产业发展的瓶颈。各种各样的终端产品,如智能手机、平板等已经逐渐融入人们的生活。人们对各种信息的获取也更加便捷和迅速,如新闻,天气,周边等。天气信息则更多是通过终端设备如移动应用程序获取的。通过获取这些信息,人们可以更加便捷高效地管理自己的生活。

基于iOS平台,这个名为“今日天气”的App应用程序通过对接中央天气预报的应用程序接口来获取全球各地的气象资料,尤其是针对中国境内的城市地区,具有更加贴心、精确的信息提醒。覆盖中国各个城市和地区,对当前的天气状况,未来15天的天气情况,大风雷电雾霾天气预警、穿衣指数推荐等等具有详细的说明。这个天气接口中包含国内外绝大多数的城市天气信息。并且提供了穿衣建议、感冒预防、是否适合运动等生活指数。直接调用现有的应用程序接口可以降低开发难度,将更多的精力专注于移动客户端的具体实现。

1.2 技术背景

开发这个系统主要使用Xcode软件和Objective-C语言。Xcode 是苹果公司推荐的集成开发工具(IDE)。它具有统一简便的用户界面,编码、测试、调试等工作都可以在一个窗口内完成。目前支持 C,C 、Objective-C等语言、编写出来的软件可直接运行于装有iOS操作系统的手机上,也能支持命令行,运行效率非常高。

Objetive-C语言是由C语言所衍生出来的语言,是一种更高级的、面向对象的编程语言。它需要运行在 Mac OS 系统下,可以通过 Xcode 等集成开发工具来进行iOS 应用程序的设计与开发[2]

1.3 研究意义

通过研发一款天气预报应用程序,嵌入穿衣指数生活建议等模块,给广大用户提供更为贴心准确的天气信息,为人们的生活提供便利。一方面,天气信息是人们日常生活中必不可少的信息之一,可以通过天气信息安排出行计划,另一方面,手机App已经融入人们的生活,在快节奏的生活方式中,浏览器的查询方式已经满足不了人们的需求,大家更倾向通过手机便捷地获取信息。结合天气接口,基于iOS系统的天气预报App一定能帮助人们生活地更加便捷高效。在App程序日趋流行的背景下,该研究极其有现实意义。

关键技术概述

2.1 iOS应用构成

在使用Objective-C语言开发的iOS工程中,主要有以下几类文件。第一是接口文件,这里主要暴露一些程序接口供外部调用。第二是实现文件,在这里实现具体的方法和函数。第三是xib文件,这类文件允许开发者使用可视化的操作方式绘制各种界面视图,而不必使用繁琐的代码。第四是属性列表文件,这里汇集了应用程序的一些配置信息。

灵活选用应用实现的方式,巧妙设计方法的接口是开发项目的基础。根据iOS应用构成,结合“今日天气”App而言,重复率高的图片自动缓存处理,接口文件单独暴露,只有界面复杂的视图才使用xib构建,其他情况下使用代码创建,提高应用运行性能。

2.2 iOS应用启动原理

一个App应用程序完整的启动流程如下:首先执行main函数,接着执行UIApplicationMain函数,紧接着创建 UIApplication对象和UIApplicationDelegate对象。读取应用程序的配置文件info.plist,设置程序启动的一些属性并开始创建应用程序的Main Runloop循环。UIApplicationDelegate对象开始处理监听到的事件。在程序启动之后,会调用application:didFinishLaunchingWithOptions:方法。如果配置了storyboard为启动文件,则加载这个文件,否则根据具体代码创建UIWindow和UIWindow的根控制器。这便是整个应用程序的启动过程。

2.3 框架简介

在开发iOS应用程序中,需要引入许多高效的框架。通过引用这些框架,开发者可以集中精力完成业务逻辑,而不必处理一些通用的繁琐低效的事情。下面简单介绍在开发“今日天气”应用程序中引入的框架。

2.3.1 AFNetworking框架

在iOS平台上,有许许多多的网络请求方式。官方早期提供的网络请求方式包括NSURLConnection和NSURLSession。随着iOS系统的屡次更新,官方现在已经废弃了NSURLConnection的相关API。鉴于此,有许多开发者封装了官方提供的API,提供更加便捷、更加容易操作的程序接口。著名的第三方框架AFNetworking就受到许多开发者的喜爱,其在Github上的star数量已经超过30000。

图2 AFNetworking架构图

通过AFNetworking的架构图中可以看到,其主要依赖于类AFURLSessionManager。AFN的原理大致如下,在网络请求中,主要使用AFHTTPSessionManager发送请求,在它的实现中,最终是调用了父类的 AFURLSessionManager。AFURLSessionManager的内部声明中有一个NSURLSession属性,除此之外它还声明了NSURLSession的代理,最终的网络操作由NSURLSession实现。AFNetworking默认的代理操作队列最大的并发操作数为1,这是让所有请求的发起和等待网络响应均在同一条线程中执行。在响应到达后,会执行一系列的代理回调,然后执行数据的解析,最后使用通知中心将请求完成的消息传递到主线程去。

AFN的使用非常简单方便,但是为了App解除对于AFN的依赖,对于网络请求还是进行了简单的封装。一般封装的网络功能工具类,使用单例模式,主要有get请求和post请求,和AFN一样,使用block返回数据和状态。还要一些其他的功能,比如上传文件和缓存。笔者再次对这个框架做了封装,单例操作,修复了常见的内存泄漏问题,同时把get请求和post请求集中在一个方法中,使得网络请求更加方便。 具体过程如下:

剩余内容已隐藏,请支付后下载全文,论文总字数:22985字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;