自学IOS开发第3天·基础SwiftUI之动态滑动列表(上)


基础SwiftUI之动态滑动列表

我完全跟着SwiftUI官方教程和文档来学习的,官方教程和文档地址:
https://developer.apple.com/tutorials/swiftui


UI构建

《自学IOS开发第2天·学习基础SwiftUI》 继续学习。


创建模型 BlogerData.swift

还是用那个项目,创建一个博主的模型,博主的信息有,头像、昵称和个人介绍,根据这些信息,创建一个模型 BlogerData.swift

创建步骤:File > New > File
在这里插入图片描述
在这里插入图片描述
BlogerData.swift:

import Foundation
import SwiftUI

struct BlogerData :Hashable,Codable{
    
    var id:Int
    
    var nickName:String
    
    private var face:String
    var image: Image {
        Image(face)     
    }
    
}

创建 JSON文件

bolger_data.json:
由于这个文件太长了,放置文章末尾附稿


创建 Model.swift

import Foundation

var bolgerData: [BlogerData] = load("bloger_data.json")

func load<T: Decodable>(_ filename: String) -> T {
    let data: Data

    guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
    else {
        fatalError("Couldn't find \(filename) in main bundle.")
    }

    do {
        data = try Data(contentsOf: file)
    } catch {
        fatalError("Couldn't loaååd \(filename) from main bundle:\n\(error)")
    }

    do {
        let decoder = JSONDecoder()
        return try decoder.decode(T.self, from: data)
    } catch {
        fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
    }
}

附稿

文章中所用到的文件

bolger_data.json

[
    {
        "id": 1001,
        "nickName": "第三女神程忆难",
        "face": "face1",
        "introduce": "立名程忆难,忆程序人生之难矣!"
    },
    {
        "id": 1002,
        "nickName": "梦想橡皮擦",
        "face": "face2",
        "introduce": "为你在IT圈“打怪升级”提供辅助!"
    },
    {
        "id": 1003,
        "nickName": "1_bit",
        "face": "face3",
        "introduce": "我就是一个热心的神奇海螺!"
    },
    {
        "id": 1004,
        "nickName": "TrueDei",
        "face": "face4",
        "introduce": "不荒废现在,不畏惧未来!"
    },
    {
        "id": 1005,
        "nickName": "一头小山猪",
        "face": "face5",
        "introduce": "若非一番寒彻骨,哪得梅花扑鼻香!"
    },
    {
        "id": 1006,
        "nickName": "沉默王二",
        "face": "face6",
        "introduce": "Java领域优质创作者"
    },
    {
        "id": 1007,
        "nickName": "敖 丙",
        "face": "face7",
        "introduce": "2020年博客之星Top1"
    },
    {
        "id": 1008,
        "nickName": "一个处女座的程序猿",
        "face": "face8",
        "introduce": "人工智能领域优质创作者"
    },
    {
        "id": 1009,
        "nickName": "帅地",
        "face": "face9",
        "introduce": "2020年博客之星Top10"
    },
    {
        "id": 1010,
        "nickName": "小傅哥",
        "face": "face10",
        "introduce": "Java领域优质创作者"
    },
    {
        "id": 1011,
        "nickName": "CSDN官方博客",
        "face": "face11",
        "introduce": "CSDN Blog 官方博客"
    },
    {
        "id": 1012,
        "nickName": "铁柱同学",
        "face": "face12",
        "introduce": "有事做,有人爱,有所期待。"
    },
    {
        "id": 1013,
        "nickName": "扬帆向海",
        "face": "face13",
        "introduce": "用知识改变命运,让家人过上更好的生活"
    }
]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第三女神程忆难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值