PGzxc / WanAndroid_SwiftUI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WanAndroid_SwiftUI

一 项目预览

二 开发环境

  • macOS:13.4
  • Xcode:14.3.1
  • Swift:5.8.1

三 新手入门(准备工作)

3.1 学习任务

Swift 5.x

SwiftUI部分

Swift项目

3.2 实践-利用wanandroid-api开发一个应用

四 开发周期

v1.0

项目主体框架搭建:使用TabView+NavigationStack

  • 首页
  • 导航
  • 项目
  • 消息
  • 我的

v2.0

网络请求:

  • API:网络接口
  • Router:BaseURL、method、path、params封装
  • APIService:接口实现类(参数、返回model)
  • token认证:登录完成后,将token保存到AppStorage中,请求时读取AppStorage中的数据设置到cookie上

Model(数据类):

  • 将接口结果快速解析(可以封装返回实体Bean的扩展):https://app.quicktype.io
  • 每个解析结果都有:newJSONDecoder、newJSONEncoder,抽取协议ModelProtocol

ViewModel(MVVM设计模式):

  • xxxViewModel继承ObservableObject
  • 在xxxViewModel中声明接口返回的Model数据,调用接口返回后接收

使用到的类库:

v3.0-首页

使用到的类库

功能开发

  • 自定义视图
  • NavigationLink导航
  • view抽取

v4.0-导航

使用到的组件

  • Section:列表分组
  • LazyVGrid:网格布局

v5.0-项目

使用到的组件

  • Picker:菜单

功能开发

1-导航菜单

  • 调用项目分类接口,展示导航菜单(每个菜单有一个对应id,作为cid,获取项目列表数据
  • 定义一个字典,一个存储项目名称,另一个存储对应id(cid),在项目分类接口完成后设置

2-菜单下的文章

  • 点击导航菜单时,从字典中取出对应的cid,获取项目列表数据
  • 定义一个字典,一个存储cid,一个存储文章列表<Article>,在项目列表数据接口完成后设置

v6.0-登录、注册、我的信息

使用到的状态或配置信息

  • environmentObject:整个应用程序**享数据。本项目中用于共享登录信息

视图导航变化:

  • 之前:NavigationLink
  • 现在:Modal

功能开发:

  • 登录、注册界面(登录状态、用户信息)
  • 我的-用户信息显示

v7.0-消息(已读、未读、详情)

功能开发:

  • 消息-已读
  • 消息 -未读
  • 消息item(点击)-详情页

v8.0-项目—点击标签切换到对应的视图

  • 点击标签切换到对应的视图
  • 通过onReceive方法,监听标签的切换,显示相应的视图

v9.0-实体类封装及界面显示

  • 数据实体类(bean)由quicktype.io生成改为AlamofireObjectMapper
  • 解决能够接收到数据,页面无法显示问题

v10.0

v11.0

  • 添加置顶文章接口和界面开发
  • ArticleItem界面更新(置顶标签、Title、content显示等)

v12.0-知识体系下的文章

  • 界面间跳转传递数据:( @State定义变量+ $selectTreeItem传递+ self.selectTreeItem = treeItem(点击复制))—直接传递出错(不变)
  • 接收到数据之后,在ViewModel中设置方法处理,并在onAppear中调用viewModel.set方法处理(比如遍历-设置值)

v13.0

  • 从首页跳转网页的方式由:Sheet弹窗改为fullscreencover
  • web添加tabbar(标题和返回按钮)

五 开发任务

5.1 已完成

接口:

  • 首页-轮播图:homeBanner
  • 首页-文章列表 :homeArticleList
  • 导航:tree
  • 项目:project
  • 项目文章:projectArticle
  • 消息-未读:messageUnRead
  • 消息-已读:messageRead
  • 用户登录:login
  • 积分-用户信息:coinUserInfo

5.2 未完成

功能开发:

  • 上拉刷新、下拉加载
  • 没网、错误信息显示、错误点击重新加载

接口:

  • 剩余接口

参考依赖

六 备注

  • 本项目按照:接口(API)+视图(组件、布局)+逻辑处理(ViewModel)+接口返回数据(Model)的模式进行开发
  • swiftUI练手项目,可能存在代码不规范等错误,如有错误还望指正

About

License:MIT License


Languages

Language:Swift 99.6%Language:Ruby 0.4%