尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Shallows快速上手教程:5分钟实现你的第一个Swift缓存存储

Shallows快速上手教程:5分钟实现你的第一个Swift缓存存储 Shallows快速上手教程5分钟实现你的第一个Swift缓存存储【免费下载链接】Shallows Your lightweight persistence toolbox项目地址: https://gitcode.com/gh_mirrors/sh/ShallowsShallows是一个轻量级的 Swift 缓存与数据持久化工具箱它为StorageKey, Value抽象层提供磁盘、内存、NSCache 等多种存储实现并支持自由组合、映射与同步帮你在几行代码内搭出可靠高效的缓存方案。本教程将带你 5 分钟从零上手实现你的第一个 Swift 缓存存储。一、Shallows 是什么Swift 缓存工具包速览Shallows 的核心思想是存储即类型组合即架构。它提供三类开箱即用的存储存储类型底层实现适用场景MemoryStorage线程安全的字典内存缓存、快速读写DiskStorage文件系统自动建目录持久化缓存、大对象存储NSCacheStorageNSCache引用类型适配系统级自动淘汰缓存所有存储都统一支持retrieve读取与set写入两个异步操作并可通过.combined(with:)、.backed(by:)、.pushing(to:)等方式自由组合轻松构建「内存 磁盘」二级缓存。二、一键安装Swift Package Manager 添加依赖Shallows 从 Xcode 11 起仅通过Swift Package Manager分发见 Package.swift安装只需一步打开 Xcode选择菜单File Swift Packages Add Package Dependency在搜索栏输入仓库地址gh_mirrors/sh/Shallows点击 Add Package勾选 Shallows 库点击 Next 完成安装。命令行项目中直接在Package.swift的dependencies里添加.package(url: https://gitcode.com/gh_mirrors/sh/Shallows, from: 0.13.0) 也可以直接把源码文件夹复制进项目零依赖一样能跑。三、5分钟实战写出你的第一个磁盘缓存下面以缓存「城市信息」为例完整演示一次磁盘缓存的存取流程。1. 定义要缓存的数据模型struct City : Codable { let name: String let foundationYear: Int }2. 创建磁盘缓存存储一行代码指定缓存目录和文件名编码let diskStorage DiskStorage.main.folder(cities, in: .cachesDirectory) .mapJSONObject(City.self) // 自动完成 JSON ↔ City 的编解码这里.mapJSONObject(_:)由 DiskExtensions.swift 提供把底层的StorageFilename, Data变成可以直接存City对象的存储。目录不存在时DiskStorage.swift 会自动创建无需手动处理。3. 写入数据let kharkiv City(name: Kharkiv, foundationYear: 1654) diskStorage.set(kharkiv, forKey: kharkiv)4. 读取数据支持回调和 Swift Concurrency 两种写法见 Async.swift// 回调方式 diskStorage.retrieve(forKey: kharkiv) { result in if let city try? result.get() { print(city) } } // async/await 方式iOS 13 let city try await diskStorage.retrieve(forKey: kharkiv)到这里你的第一个 Swift 磁盘缓存就跑起来了四、进阶技巧内存 磁盘组合缓存每次读磁盘都慢Shallows 最强大的设计就是组合Composition一行代码把内存缓存叠加到磁盘之上见 Composition.swiftlet efficient MemoryStorageFilename, City() .combined(with: diskStorage)它自动完成三件事读先查内存未命中再落盘读取回填磁盘命中的值会自动拉回内存下次直接命中写同时写入内存和磁盘双份保险。更多实用招式数据映射.mapString(withEncoding:)、.mapJSON()、.mapPlistObject(_:)等便捷方法见 DiskExtensions.swift只读/只写存储.asReadOnlyStorage()对外隐藏写入能力.asWriteOnlyStorage()反之⚡同步存储.makeSyncStorage()提供try语法适合脚本与测试场景见 SyncStorage.swift容错兜底.defaulting(to:)和.fallback(with:)在取值失败时返回默认值配合.update方法可优雅更新数组等复合值双存储压缩zip(storageA, storageB)同时从两个存储取值返回元组结果见 Zip.swift自定义存储只需实现retrieve与set两个方法再调用.asStorage()即可接入见 Storage.swift。五、Shallows 快速参考清单需求推荐 API内存缓存MemoryStorageK, V().asStorage()磁盘文件夹缓存DiskStorage.main.folder(name, in: .cachesDirectory)存 Codable 对象.mapJSONObject(MyType.self)二级缓存组合.combined(with:)/.backed(by:)只暴露只读接口.asReadOnlyStorage()单值存储无键.singleKey(settings)同步读写.makeSyncStorage()测试用例参考MemoryStorageSpec.swift六、总结Shallows 用极简的组件式设计解决了 Swift 项目中最常见的缓存难题磁盘持久化、内存加速、NSCache 淘汰、同步读写全部一个 API 风格贯穿。它体积小、零依赖源码完全可读可控——如果现有组件不够用你甚至可以基于它快速搭建自己的缓存层。现在就打开 Xcode5 分钟拥有你的第一个 Swift 缓存存储吧【免费下载链接】Shallows Your lightweight persistence toolbox项目地址: https://gitcode.com/gh_mirrors/sh/Shallows创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表