实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(2)

简介: 实战教程·元宇宙来了,准备好你的电子名片了吗?(五)

URLSession实例:创建网络请求

创建好ViewModel模型视图后,我们来学习使用URLSession创建一个网络请求,在学习之前我们先来了解一个JSON文件的相关知识。

JSON是一种文件格式,和TXT文本一样,JSON使用带有固定格式的纯文本创建数据集。我们在搭建NewView添加身份卡视图时曾实现了新增身份卡的方法,即赋值给符合Model格式的变量,然后将Model格式的数据添加到个人主页的List中。

JSON文件则是包含了所有符合Model格式的数据的数组集合,我们可以创建好一个JSON文件及其内容,并通过网络请求将JSON文件请求到本地并解析加载到List中。

我们先来看看JSON文件的格式,如下图所示:

[  {    "platformIcon": "icon_juejin",    "title": "掘金签约作者",    "platformName": "稀土掘金技术社区",    "indexURL": "juejin.cn/user/3897092103223517"  },  {    "platformIcon": "icon_aliyun",    "title": "专家博主",    "platformName": "阿里云社区",    "indexURL": "developer.aliyun.com/profile/expert/376pj7xeqgqjy"  }]

上述JSON文件是通过一个在线JSON文件生成器(如npoint.io、fastmock.site等等)生成的准备代码,其中由“[]”包裹的是数组,而“{}”包裹的是数组中的对象,我们创建了2个对象,且数据模型格式都符合Model数据模型定义的参数。

通过第三方网站可以生成一个API接口的链接地址,我们声明一个常量参数存储它,如下代码所示:


let JsonURL = "https://api.npoint.io/c51968c99a2a087dac5e"

当然,我们也可以使用测试工具测试创建的JSON文件地址返回的结果是否正确,可以使用postman或者apifox测试软件进行测试,避免在项目开发时请求数据失败而导致开发卡点的问题,如下图所示:

image.png

上图中,使用的测试工具是apifox。使用方法也很简单,创建一个接口并将刚刚生成的地输入进去,并设置好对应的Query参数,点击运行,便可查看该接口返回状态及结果。熟练使用接口测试工具,可以帮助我们节省开发时间。

回归正题,我们在ViewModel视图模型中使用URLSession实例创建一个网络请求的方法,如下代码所示:


//网络请求
func getData() {
    let session = URLSession(configuration: .default)
    session.dataTask(with: URL(string: JsonURL)!) { data, _, _ in
        guard let jsonData = data else { return }
        do {
            let data = try JSONDecoder().decode([Model].self, from: jsonData)
            self.models = data
        } catch {
            print(error)
        }
    }
    .resume()
}

image.png

上述代码中,我们创建了一个网络请求方法getData,在方法里,我们使用URLSession创建网络请求,声明了常量session来使用URLSession API,然后加载的目标地址为声明的JsonURL,并执行下载数据,当下载成功后,将按照Model数据模型格式的数组加载到models数组里,若加载失败则打印错误信息。

然后我们可以在初始化时调用getData获得数据方法来加载数据,如下代码所示:


init(){
  getData()
}

image.png

相关文章
|
NoSQL Go 数据库
2023最新版 Navicat 16.2+系列安装和试用教程详解:轻松掌握最新版本的数据库管理工具连接Redis
2023最新版 Navicat 16.2+系列安装和试用教程详解:轻松掌握最新版本的数据库管理工具连接Redis
556 0
|
12月前
|
存储 算法 数据安全/隐私保护
基于A律压缩的PCM脉冲编码调制通信系统simulink建模与仿真
本项目展示了一种基于MATLAB 2022a的脉冲编码调制(PCM)算法,用于将模拟信号转换为数字信号。A律压缩是非均匀量化方法之一,适用于语音信号编码,能够提高信噪比和编码效率。核心代码已提供,并附有详细中文注释和操作视频。A律压缩通过调整量化间隔来适应人耳的听觉特性,减少量化噪声,实现高质量的语音通信。此技术广泛应用于电话通信、VoIP和数字音频处理等领域。
|
网络安全 数据安全/隐私保护
SNMP客户端MIB Browser的使用
SNMP客户端MIB Browser的使用
3236 0
后端测试------使用Postman统一添加请求头
后端测试------使用Postman统一添加请求头
|
人工智能 文字识别 自然语言处理
准确高效的TextIn文档解析:一项开发痛点的解决方案
企业在构建知识库问答系统时面临挑战,尤其是处理扫描文档和手写内容。传统OCR工具和开源方法在准确性和速度上不足。专业长文档解析成为关键,其中TextIn平台的文档解析服务脱颖而出。该服务能快速将PDF转为Markdown,提高处理速度和准确性,尤其适合处理复杂布局的长文档。通过实际测试,TextIn能有效增强LLM问答系统的性能,解决无法正确解析的问题。目前TextIn处于内测阶段,提供每周7000页的免费试用额度,开发者可通过其官网或“合研社”公众号了解更多信息和获取接口文档。
|
监控 Shell 调度
Mac创建定时任务
Mac创建定时任务
|
人工智能 边缘计算 Kubernetes
阿里云边缘容器云帮助AI推理应用快速落地
2024全球分布式云大会·北京站,阿里云徐若晨演讲内容分享
350 0
|
Kubernetes Linux 调度
「译文」深入了解 Kubernetes 指标 - 第三部分 - 容器资源指标
「译文」深入了解 Kubernetes 指标 - 第三部分 - 容器资源指标
|
存储 算法
《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数
《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数
157 0
|
存储 负载均衡 前端开发
一文助你快速理解Cookie,Session,Token的区别
本文详细描述了Cookie,Session,Token的定义、鉴权原理和区别。cookie是由Web服务器保存在用户浏览器上的一小段文本,格式:key=value,包含用户相关的信息。session是依赖Cookie实现的,session是服务器端对象,是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息,确定身份信息。
922 1
一文助你快速理解Cookie,Session,Token的区别