首页
学习
活动
专区
圈层
工具
发布

手把手带你撸一个网易云音乐首页(二)

你或许可以经常在别的项目中看到这样的代码,在 UITableView 中根据 index 来配置 UITableViewCell: override func tableView(_ tableView...在接下来的内容中,我会尽我所能与大家分享这个问题的解决思路。...iOS 原生或第三方开源库有许多可以在 Swift 中解析 JSON 的方式,你可以使用你喜欢的那个,例如 SwiftyJSON,HandyJSON 等,在这个工程中,我坚持使用原生的 Codable...当然在 Swift 中要实现多种类型并且可以轻松切换,最好的方式还是使用枚举,那么就让我们开始构建 ViewModel 吧!...在 swift 中,我们可以使用协议扩展 extension 为协议提供默认值, 这样我们就不必为每个 item 的 rowCount 赋值了,省去一些冗余的代码: extension HomeViewModelSection

1.8K20

Swift 网络请求数据与解析

看看在Swift中是在怎样请求数据,解析数据加载图片这些的,也使我们最基本最常见的用法了,先说说这几个三方库:      第一个: Alamofire  (它的原作者就是AFNetworking的原作者...Git地址:https://github.com/Alamofire/Alamofire     第二个: SwiftyJSON  一个解析JSON数据的三方库,使用swift写的,中间帮你省去swift...的各种可选值的操作,很简便(推荐!)    ...在导入的过程中,一定要注意你自己工程的最低版本要求和三方库的最高版本要求之间的差异,这个很容易忽略导致错误!我把自己的 cocoapods 的终端输入命令展示出来,确保是没问题,可行的!...(.GET, "http://api.liwushuo.com/v2/channels/104/items?

3.1K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在 SwiftUI 中实战使用 MapKit API

    前言SwiftUI 与 MapKit 的集成在今年发生了重大变化。在之前的 SwiftUI 版本中,我们将 MKMapView 的基本功能封装到名为 Map 的 SwiftUI 视图中。...正如我之前所说,在 SwiftUI 框架的早期版本中,我们有一个 Map 视图,为我们提供了 MapKit 的基本功能,该功能现在已被弃用。...让我们从使用 SwiftUI 中最新迭代中提供的新 MapKit API 集成的基本示例开始。...MapContentBuilder 类型与符合 MapContent 协议的任何类型一起使用。在我们的示例中,我们使用了 Marker 和 Annotation 类型。...总结今天,我们学习了在 SwiftUI 中集成 MapKit 的基础知识。在接下来的几周里,我们将继续讨论相机操作、地图控件和其他高级主题。希望你喜欢这篇文章。

    2.5K00

    iOS - RxSwift 项目实战记录

    view,不再出现Optional MJRefresh // 上拉加载、下拉刷新的库 SVProgressHUD // 简单易用的HUD 敲黑板 Moya的使用 Moya是基于Alamofire...有的话那从今天开始就要认清楚这一点,【tableView其实是由section组成的】,所以在使用RxDataSources的过程中,即使你的setion只有一个,那你也得返回一个section的数组出去...中初始化我们的input,通过transform得到output,然后将我们output中的sections序列绑定tableView的items LXFViewController.swift //...中初始化刷新控件 为tableView设置刷新控件,并且在创建刷新控件的回调中使用output的requestCommond发射信号 tableView.mj_header = MJRefreshNormalHeader...sections,sections在ViewController已经绑定到tableView的items了,所以此时tableView的数据会被更新。

    3.8K41

    封装一个 Swift-Style 的网络模块

    如果你还是用 OC 的思维写着 Swift 代码,那可以说是一种极大的资源浪费,你可能还会因为 Swift 弱鸡的反射而对它感到不满,毕竟 Swift 在强类型和安全性方面下足了功夫,如果不使用 OC...在 UI 构建方面,无论是 Swift 还是 OC,无非都是调用 API 罢了,在有自动提示的情况下,其实编码体验都差不多。...讲到网络层就绕不开 Alamofire,Alamofire 几乎是现在用 Swift 开发 iOS App 的标配,它是个很棒的库,几乎能满足所有网络方面的日常需求,但如果对它再封装一下的话,不仅使用起来更得心应手...当然如果你想在网络模块中把 JSON 直接转化成 Model 也是可以的,我个人倾向于使用 ObjectMapper 来构建网络 Model 层,于是就可以对外提供两个直接取得 Model 和 Model...,而且在测试过程中会让你发现一些开发过程中的思维盲区,还能帮你优化设计,毕竟良好的可测试性在某种程度上就意味着良好的可读性和可维护性。

    2.5K41

    视频采集工具 youtube-dl 接口介绍

    0x02. python接口 在下载 youtube-dl 源码后,可以看到 /docs/module_guide.rst 是一个简单的接口介绍文档,但只有最简单的三四个 api 的使用说明,本文会在这个的基础上加上作者在使用过程中自己用到的接口和参数...初始化接口 在进行下载之前,youtube-dl 需要初始化一个可以看作是下载器的类,可以在初始化时指定之后使用的解析器、解析格式、是否需要使用代理等。...,在源码中的 /youtube-dl/YoutubeDL.py 文件里有详细的注释说明,这里只将常用的几个参数列出来以供参考。...官方文档中给出的提取播放列表 (playlist) 的方法如下所示,只是将 extract_info 的第二个参数改为 False,但作者在实际开发过程中发现,这样的方式有很大的弊端。...在整个 extract_info 函数执行的过程中是不允许被打断的, youtube-dl 本身也没有实现断点续传功能,这就导致一旦 playlist 过长、视频太大,程序很可能就因为网络波动而导致前面的工作白费

    3K10

    REST在许多API使用场景中仍然优于GraphQL

    Douglas Lopes 在 Unsplash 上 在过去的几年里,我一直听到 GraphQL——一种用于 API 的查询语言,允许客户端请求特定数据——是 API 的未来。...但是,当您 开始使用 GraphQL 时,您会发现它会产生一整套新的问题,这些问题会压倒其优势。 我将分解这些问题,以便您更好地决定 GraphQL 是否值得在您的集成中使用。...随着时间的推移,随着您在请求中增加资源,理解和遵循您的速率限制将变得更加复杂。 最后,随着 API 的成熟,其 GraphQL 模式变得更加复杂。...由于这些响应不像 REST 中那样标准化,因此它们更难计划和自动处理。 许多工程师都有构建和/或维护 REST API 集成的经验。 各种规模的公司主要使用 REST API。...在竞争的 API 架构能够超越——甚至匹配——REST 对提供者和消费者双方的实用性之前,REST 将继续成为首选。

    1.1K10

    Go 装饰器模式在 API 服务程序中的使用

    因为 Go 简洁的语法、较高的开发效率和 goroutine,有一段时间也在 Web 开发上颇为流行。由于工作的关系,我最近也在用 Go 开发 API 服务。...但对于 Golang 这种奉行极简主义的语言,如何提高代码复用率就会成为一个很大的挑战,API server 中的大量接口很可能有完全一致的逻辑,如果不解决这个问题,代码会变得非常冗余和难看。...Python 中的装饰器   在 Python 中,装饰器功能非常好的解决了这个问题,下面的伪代码中展示了一个例子,检查 token 的逻辑放在了装饰器函数 check_token 里,在接口函数上加一个...以下的 API 服务代码示例是基于 Gin-Gonic 框架,对 Gin 不太熟悉的朋友,可以参考我之前翻译的一篇文章:如何使用 Gin 和 Gorm 搭建一个简单的 API 服务器 (一)   本文中的代码为了方便展示...pipeline 的方式下传参的方法,只能使用最基本的方式。

    4.4K20

    在Windows操作系统中怎样使用nc命令

    创作时间:2022 年 5 月 23 日 博客主页: 点此进入博客主页 —— 新时代的农民工 —— 换一种思维逻辑去看待这个世界 前言 最近在学习flink流处理框架这块的内容,在调试代码时候需要模拟数据流式输入的环境...之前在Mac和Linux系统下使用nc命令是非常方便的,可是windows环境下有所不同,经过在网上检索一番之后,将在window下如何使用nc命令进行总结。...中cmd下使其命令了!!...测试使用 在idea中配置IP为localhost,端口为7777,运行idea程序并进行测试,接收到数据,测试成功, 换种方式测试 打开两个cmd窗口在其中一个窗口中输入命令nc -lp 1234...在另一个窗口输入命令nc -nv 127.0.0.1 1234 数据传输成功,测试完成。

    10.2K20

    函数响应式编程框架RxSwift 学习——Observable

    之前在iOS开发领域比较火的ReactiveCocoa也是根据Rx来的,所以在概念上基本是相同的。在GitHub上把代码取下来之后,运行官方的Demo可以看到它的很多用法。...如果要自己创建的话,可以利用它提供的create函数来创建,create接受函数闭包作为参数,比如我的项目里用到了Alamofire,我如果想让它的response是一个observable的,我可以这样写...信号的操作 常用的操作符有map,flatMap,subscribe,doOn,retry等等,具体的用法在它的文档中有具体说明。比如在我的demo里,需要根据页码加载列表数据。...发生变化的时候自动去请求服务端的数据,然后刷新tableview。...throttle保证了事件序列发送的频率不会过快,doOn在每次.Next到来之前让我们有机会做些额外的处理,页码变化通过flatMap触发API调用,然后把得到的数据绑定到每个cell上面。

    1.1K10

    ChatGPT批量下载YouTube视频为mp3音频

    ChatGPT中输入提示: 你是一个Python编程专家,写一个脚本,具体任务步骤如下: 循环接受用户输入的YouTube视频地址; 获取用户输入的YouTube视频地址(用户一次可能输入一个URL,也可能一次输入多个...(格式为MP3),保存到文件夹:"F:\aivideo"的子文件夹,子文件夹名称为列表名; 注意: 每一步都要输出信息到屏幕上; Mp3的文件名在保存前要进行处理,去掉和Windows系统中符合命名规范的特殊字符...download_playlist函数:用于下载播放列表中的所有视频音频,音频以MP3格式保存在以播放列表名称命名的子文件夹中。...如何使用: 确保已经安装yt-dlp:可以通过以下命令安装: 复制代码 pip install yt-dlp 运行脚本,用户可以一次输入一个或多个YouTube视频或播放列表地址,程序会自动识别地址并下载音频...每一步操作都有清晰的提示信息输出,帮助用户了解下载进度。

    95110

    youtube-dl命令参考

    NUMBER 指定列表中开始下载的视频(默认为1) --playlist-end NUMBER 指定列表中结束的视频(默认为last) --playlist-items...ITEM_SPEC 指定列表中要下载的视频项目编号.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13" --match-title...特殊序列可以根据python字符串格式化操作来格式化。例如,%(NAME)s或者%(NAME)05d。为了澄清,这是一个百分号,后面跟着一个名字,然后是格式化操作。...%(ext)s带有标题youtube-dl test video和ID 的mp4视频BaW_jenozKcj,这将导致在youtube-dl test video-BaW_jenozKcj.mp4当前目录中创建一个文件...在某些情况下,您不需要特殊字符(如中,空格或&),例如通过8位不安全通道将下载的文件名传送到Windows系统或文件名时。

    8K21

    iOS秋招总结 = 面经 + 闲言碎语 (不断更新)

    阿里面试题 一面 为什么要用Alamofire而不用原生的NSURLSession,Alamofire的优势是什么?...在网络库中,如何针对TableView快速滚动过程中的图片额外渲染进行优化(网络库不能持有TableView)? 二面 iOS的系统架构是怎么样的?常用SDK有哪些? 了解HTTP协议吗?...= 反正就是使用优先级就解决了) 二面 说一说 MVC 和 MVVM 的区别,以及各自的优缺点。 如何将 MVC 改造成 MVVM ?在MVVM中,网络请求、缓存处理的部分应该放在哪个模块?...使用 Protocol 有什么好处 比较一下 Swift 和 Objective-C 在语言层面上的安全性? 如果ViewController中使用闭包时,用weak避免循环引用,会有什么问题?...如何对TableView进行优化? 能讲一讲你对光栅化的理解吗? 三面 对Swift和OC有什么看法? 能对Swif中的可选类型谈下你的理解吗? 说一下快排的伪代码和时间复杂度?

    1.9K40

    youtube-dl CMD

    NUMBER 指定列表中开始下载的视频(默认为1) --playlist-end NUMBER 指定列表中结束的视频(默认为last) --playlist-items...ITEM_SPEC 指定列表中要下载的视频项目编号.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13" --match-title...特殊序列可以根据python字符串格式化操作来格式化。例如,%(NAME)s或者%(NAME)05d。为了澄清,这是一个百分号,后面跟着一个名字,然后是格式化操作。...%(ext)s带有标题youtube-dl test video和ID 的mp4视频BaW_jenozKcj,这将导致在youtube-dl test video-BaW_jenozKcj.mp4当前目录中创建一个文件...在某些情况下,您不需要特殊字符(如中,空格或&),例如通过8位不安全通道将下载的文件名传送到Windows系统或文件名时。

    4.7K40
    领券