Swift--基于Alamofire网络请求 Networkable的具体实践

Allegro封装避坑指南:双层金手指的焊盘堆叠与阻焊开窗到底怎么做? 本文深入解析Allegro封装设计中双层金手指焊盘堆叠与阻焊开窗的关键技术难点,提供Cadence 17.4环境下的实战操作指南。从焊盘堆叠原理到阻焊全开窗规范,详细讲解金手指封装制作的避坑技巧,帮助工程师解决M.2等接口设计中的常见问题,确保PCB加工质量和焊接可靠性。 阅读详情

在DeviceNumberRequestable.swift文件中:

import Foundation

//请求结果
enum DeviceNumberRequestResult<T>{
     case success<T>
     case failure(Error)
}

//模型遵循Codable协议
struct DeviceNumberRequestModel: Codable{
     var StationNumber : Int = 0
     var DeviceType : Int = 0
}

//请求参数
struct DeviceNumberTargetType : NetworkTargetType{
      
      var storeID : String
      
      var baseURL : URL? {
          return URL(string: BaseeUrl)
      }

      var path:String {
          return "/express/load/source1/\(storeID)"
      }

      var httpMethod: NetworkMethod {
          return .get
      }
 
      var task: NetworkTask {
          return .requestPlain //没有参数的网络请求
      }

      var headers: [NetworkHTTPHeaders]?{
          return [CUTicket()]
      }
}

//发送请求
protocol DeviceNumberRequestable {}
extension DeviceNumberRequestable {
    
    func load(stordID : String , completion : @escaping (DeviceNumberRequestResult<[(index : Int , deviceModels : [SelectDeivceModel])]>) -> Void) -> Void {
        Network<DeviceNumberTargetType>.request(DeviceNumberTargetType(storeID: stordID)) { (result) in
            switch result {
            case let .success(response):
       
                if let models = response.toModel([DeviceNumberRequestModel].self) {
    --------------------------------------------------------
       这里面的内容根据你的数据结构 model来写,下面是我的例子             
                    var turples :  [(index : Int , deviceModels : [SelectDeivceModel])] = []
                    
                    (0...9).forEach{ index in
                        turples.append((index: index == 0 ? 1 : index * 100, deviceModels: (0...99).map{
                            let stationNumber = index * 100 + $0
                            let selectDeivceModel = SelectDeivceModel(stationNumber: stationNumber)
                            
                            for model in models where model.StationNumber == stationNumber {
                                selectDeivceModel.isSelected = true
                                selectDeivceModel.deviceType = model.DeviceType
                                break
                            }
                            return selectDeivceModel
                        }))
                    }

    --------------------------------------------------------
                    completion(.success(turples))
                }else {
                    completion(.failure(NSError(domain: "转换失败", code: 911, userInfo: nil)))
                }
               
            case let .failure(error):
                 completion(.failure(error))
            }
        }
    }
}


//调用
 terminalNumberText.shouldBeiginEditHandler = { [unowned self] in
            guard let storeID = PalauDefaults.storeID.value else {
                return false
            }
            self.load(stordID: storeID, completion: {[weak self] (result) in
                guard let `self` = self else { return }
                switch result {
                case .success(let models):
                    print(models)
                                let deviceNumSelectedView = Bundle.main.loadNibNamed("DeviceNumSelectedView", owner: self, options: nil)?.first as! DeviceNumSelectedView
                                deviceNumSelectedView.center = self.view.center
                                deviceNumSelectedView.frame = CGRect(x: 20, y: 20, width: self.view.bounds.width - 40, height: self.view.bounds.height - 40)
                                deviceNumSelectedView.getCurrentNumBlock = { [weak self] d in
                                    self?.terminalNumberText.originText = (d < 10) ? "00\(d)" : (d < 100 ? "0\(d)" : "\(d)")
                                    self?.view.removerCover()
                                }


                                self.view.addSubViewWithCover(deviceNumSelectedView, blur: true, addColseBtn: false, canDisappare: false, closeBeforeHandle: nil)

                    deviceNumSelectedView.datas = models
                case .failure(let error):
                    print(error)
                    Utility.showNoticeAlertView(("Get DeviceNumer Failed",NSLocalizedString2("\(error.localizedDescription)", comment:"")))
                }
            })
            return true
        }
Swift - Alamofire源码解析 文章目录Alamofire源码解析一、Alamofire目录结构二、使用的基本流程 (不讲解基本使用,从源码解析)1. 发起请求的源码 (举例:普通请求流程)2. SessionManager 的关键点解析3. SessionManager , 发起请求关键代码4. SessionDelegate , 收到请求关键代码5. TaskDelegate , 收到请求的关键代码5. 数据序列化的工作。 ResponseSerialization类,关键代码总结 Alamofire源码解析 解析版本: Ala 阅读详情

相关推荐

swift4.2网络请求的三种封装

对于swift4.2的网络请求的封装。包含链式,类AFN及对moya的封装。封装的功能包含:1.一次性处理请求指示器HUD 2.一次性处理请求状态码及错误弹窗 3.登录过期自动跳转到登录页等。 4.可以处理所有接口都要使用的公共参数。

Swift5.0 Alamofire网络请求的二次封装

Alamofire结合SwiftyJSON、ObjectMapper二次封装网络请求Alamofire直接上代码吧单例方法:请求类:YRequestManager扩展请求方法:post、get、upload扩展私有方法,封装请求请求数据返回响应方法AFSErrorInfo结构体 和 YAPITargetType协议protocolbaseModel代码实例1说明 Alamofire AFNet...

仰望星空的博客 1万+

Rxswift+moya+Codable封装拿来可用.zip

rxswift+moya+Codable工具封装,可直接使用,支持图片批量上传已经亲测通过,swift支持5.0以上

swift5.0 网络层Alamofire、图片上传AliyunOSSiOS链式封装

项目地址 使用swift5.0 基于Restful接口规范,对网络层Alamofire、图片上传到AliyunOSSiOS的二次封装。 网络层: 只需要调用简单接口,可完成数据的请求。 利用swift语法特性,实现闭包 + 链式调用的方式,完成数据请求。 图片上传: 只需要调用简单接口,可完成图片上传。 利用网络层获取到credential后,使用封装接口,可生成client。 静态方法实现图片上传。 利用二分法对图片压缩处理。 举例 //MARK: 上传图片 //MARK: NetworkM

xymspace 1267

国科大——形式语言与自动机理论(0812课程)——作业

此次作业题考察,包括但不限于有限自动机、无限自动机、正则文法、正则表达式以及正则语言的性质,题考查下推自动机相关的知识,题考查图灵机相关的知识。此课程建议本科学习过课程的同学选修,成绩占比:考试100%。此课程虽然留有作业,但可做也可不做,且不考勤。

qq_54145399的博客 706

Claude Code 使用 OpenAI Codex(GPT-5.3-Codex)完整配置教程

通过 LiteLLM 可以让 Claude Code 调用任何模型,包括:OpenAIDeepSeekGemini本地模型↓↓优点:不依赖 Anthropic API可自由切换模型支持统一 AI Gateway这种“LLM Gateway 架构”正在成为 AI 开发工具的主流实践。

Jacobe_zhao的博客 1万+

iOS swift 网络请求框架(AFN/Moya/Alamofire)和原生API

moya的使用

baidu_40537062的博客 8020

Zemax光机热集成分析:从FEA数据导入到光学性能评估实战

在精密光学系统设计中,环境温度变化和机械应力是导致像质恶化的关键因素,这涉及到光、机、热多物理场的耦合分析。其核心原理在于,通过有限元分析(FEA)软件(如ANSYS)模拟热与力学载荷下的结构变形和温度分布,并将这些物理场数据精准映射到光学设计软件(如Zemax)中,以评估其对调制传递函数(MTF)、点列图等核心光学指标的影响。这项技术的工程价值在于,它使设计从静态的理想模型跃升至动态的工程现实,能够在设计阶段就预测并补偿环境扰动,从而显著提升光学系统在航空航天、车载镜头、高功率激光等严苛工况下的可靠性与稳

weixin_30565327的博客 356

【iOS_Swift_Alamofire实现网络请求】

学习swift继续延续之前的思路,对照着OC学,从UI起手,学习到对应的自适应布局。今天再次学习了swift的原生网络请求和对应的第三方库-Alamofire。和AFN库一样使用起来简单快捷,swift的语言特性安全在很多处都会体现,接下来会学习swift的原声json Model解析库。

weixin_61639290的博客 3951

AFSim 2.9中文手册实战指南:从安装到高级功能详解(附B站视频链接)

本文详细介绍了AFSim 2.9的安装配置、基础功能操作和高级功能应用,帮助用户快速掌握这款强大的仿真平台。从系统要求检查到多体动力学仿真,再到性能优化技巧,全面解析AFSim 2.9的使用方法,适合初学者和进阶用户参考。

weixin_30892037的博客 566

STM32F103到F407移植OLED,为啥F4屏幕不亮?一个延时函数搞定时序问题

本文详细分析了STM32F103到F407移植OLED时屏幕不亮的问题,指出时钟频率差异导致的时序问题是关键原因。通过对比F103和F407的时钟架构差异,提供了精确延时函数的实现方法,并指导在I2C通信关键点插入适当延时,确保OLED正常显示。文章还涵盖了完整的测试方案和高级优化技巧,帮助开发者彻底解决移植中的时序问题。

weixin_30642561的博客 549

Swift -《从0到1 - 5》:封装网络请求工具类(Alamofire + Moya + SwiftyJSON)和链式封装

在OC开发中网络请求通常都使用AFNetworking,在Swift虽然也可以使用,但是推荐使用Swift语法实现的网络请求库Alamofire。 通常大家会对请求库进行一次或多次封装,方便维护,我也不另外。刚开始参考了很多文章,最终决定使用Alamofire +Moya + SwiftyJSON 实现网络请求工具类和API管理类 本篇末尾介绍另一种通过链式封装Alamofire的实现方式 GitHub Demo 地址 Alamofire是一个使用Swift开发的网络请求库,其开发团队是AFNet.

iotjin的专栏 8578

专栏目录:Linux 内存管理子系统的进化——从 MM 到 HMM

专栏梳理了Linux内存管理子系统从经典MM到异构内存管理(HMM)的演进历程。内容分为六大部分:首先介绍经典MM基础,包括虚拟地址空间、页表、VMA等核心机制;其次分析MM通用框架如页表遍历、NUMA迁移等;然后探讨设备内存引入的关键技术,如ZONE_DEVICE和dev_pagemap;接着深入解析HMM核心机制及其与DMA的集成;随后通过多个实际驱动案例展示HMM应用;最后讨论大页支持等进阶主题。专栏采用"经典机制→问题→扩展方案"的三段式结构,帮助开发者理解Linux如何通过HMM实现设备内存管理。

图形/计算GPU的驱动与虚拟化技术分享园地 874

swift网络请求封装(Moya)

swift最新网络请求封装,使用moya进行数据请求,对返回的数据进行了模型转化,将返回的数据直接转化为model类型,方便好用,赶快试试吧!

范佐佐的博客 4040

【专栏必读】王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记使用说明及章节导航

本文档汇总了王道考研408计算机网络和湖科大教书匠计算机网络课程的重点内容,包括计算机网络体系结构、物理层、数据链路层、网络层、传输层和应用层的详细讲解。通过ISO/OSI和TCP/IP模型,深入探讨了通信基础、介质访问控制、IP地址、TCP/UDP协议、流量控制和网络编程等关键概念。此外,还提供了Linux网络编程实践,帮助读者巩固理论知识

快乐江湖的博客 2万+

AUTOSAR从入门到精通-【应用篇】基于AUTOSAR架构的混合动力电池 ECU 软件开发

由于严峻的环境污染和能源短缺问题,各国都在致力于发展新能源车,以达到节能排放的目的。在此背景下,12V启停系统由于成本较低廉、匹配方便,得到广泛应用。但是12V系统作为启停系统后存在许多问题,比如节能和减排效果有限,并且轻度混合动力系统的功率需求通常在10~15KW,在此电压条件下运行时,电池的电流会达到1000A,因此该方案行不通。高压混合动力系统(>110V)的节油效果好,但是成本很高,并且需要大功率的电机。48V混合动力系统比高压混合动力系统成本。

getusushu的博客 1488

Alamofire常见GET/POST等请求方式的使用,响应直接为json

Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作,提供了更简单、更易用的接口,大大简化了网络请求代码的编写。Alamofire提供了一套优雅且易于理解的API,使得开发者可以轻松发起各种类型的HTTP请求。它支持GET、POST、PUT、DELETE等常用的请求方法,并且提供了丰富的参数设置选项。Alamofire提供了强大的响应处理功能,支持数据解析、文件上传和下载等常见需求。它基于Swift的特性和语法,代码简洁、可读性强,易于维护和扩展。

2847

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

swift 网络请求Alamofire的使用

一、使用Alamofire进行数据请求 1,以GET请求为例(1)不带参数,不带结果处理Alamofire.request("httpbin.org/get")(2)带参数,不带结果处理Alamofire.request("httpbin.org/get", parameters: ["foo":"bar"])(3)带参数...

weixin_33736649的博客 377

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【iOS Swift Moya 最新请求网络框架封装通用】

设计一个基于Moya的网络请求框架,可以提供灵活的网络请求管理,例如设置请求超时时间、暂停某个正在进行的请求等功能。以下让我们一起来设计框架示例,包括关键部分的代码实现和详细说明。首先,定义一个符合TargetType协议的枚举来描述所有的API接口。// 其他API接口// 提供模拟数据。

u011291148的专栏 2163

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Alamofire:iOS开发者的网络请求利器

Alamofire:iOS开发者的网络请求利器 AlamofireAlamofire/Alamofire: Alamofire 是一个用于 iOS 和 macOS 的网络库,提供了 RESTful API 的封装和 SDK,可以用于构建网络应用程序和 Web 服务。项目地址:https://gitcode.com/gh_mirrors/al/Alamofire 是一个开源的、由 Swift 编写...

gitblog_00039的博客 653

Swift版的网络请求封装

最近开始学swift,真的是欲罢不能啊。感觉比oc写起来顺手多了。呐,今天呢,和大家分享一下swift版的网络请求库Alamofire,相当于oc里的AFNetworking,用起来不要太爽哦!!!1.还是和往常一样,cocoapods导入第三方库Alamofire2.建一个管理类,继承于NSObject3.创建单例:private let NetRequestShareInstance = Net

岁月静好,善待时光。 2213

iOS swift Alamofire+HandyJSON网络框架封装

iOS swift Alamofire+HandyJSON网络框架的封装

weixin_38400324的博客 1551

swift 面向协议的网络请求封装

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

zhuangch的专栏 1285

swift ——~——~第三方网络请求封装

最近闲了下来,做个demo看了下swift3.0相比2.0发生了多大的变化  费话不多说,直接上代码     static func getRequest(url:NSString,dic:NSDictionary,cla:AnyClass,progress:((Progress)->Void)?, success:@escaping ((URLSessionDataTask,Any?)->V

xiaobo0134的专栏 955

Swift之网络请求框架封装

该篇文章内容大致都是说明内容,无代码模块 在项目开发过程中,经常会使用到第三方的框架,最多的无非是网络请求框架 AFN、ASI、还有使用Swift写的Alamofire框架 如果将这些第三方框架的请求放置在Controller中,在更换第三方框架时,整个框架都将在报错。 所以在开发过程中,要对第三方框架进行二次封装,屏蔽Controller与这些第三方框架之间的耦合 开发人员进行二次封装

Francis-ChinaFeng 2530

Alamofire:优雅的Swift网络请求库

Alamofire:优雅的Swift网络请求库 【免费下载链接】Alamofire Alamofire/Alamofire: Alamofire 是一个用于 iOS 和 macOS 的网络库,提供了 RESTful API 的封装和 SDK,可以用于构建网络应用程序和 Web 服务。 ...

gitblog_07079的博客 681
上一篇: Swift--XIB 嵌套不显示的问题
下一篇: Swift--将网络请求获取到的数据转成模型
SoftwareDoger
博客等级 码龄10年 8粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值