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),仅供参考

相关新闻

10 分钟在 Obsidian 中跑通 Claudian

10 分钟在 Obsidian 中跑通 Claudian

10 分钟在 Obsidian 中跑通 Claudian 【免费下载链接】claudian An Obsidian plugin that embeds Claude Code/Codex as an AI collaborator in your vault 项目地址: https://gitcode.com/GitHub_Trending/cl/claudian 让 AI 直接读改 Obsidian 里的笔记,是…

2026/8/25 9:49:50 阅读更多 →
STM32嵌入式日志系统设计:RAM+Flash双缓冲与LVGL集成

STM32嵌入式日志系统设计:RAM+Flash双缓冲与LVGL集成

1. 为什么嵌入式日志系统不是“可有可无”,而是系统健壮性的第一道防线在STM32项目里,你有没有遇到过这样的场景:设备在现场连续运行三天后突然死机,串口打印停在某一行,但复位后又一切正常;调试时加了几十…

2026/8/25 9:48:48 阅读更多 →
深度解析 three-devtools 脚本注入机制:破解浏览器扩展跨上下文访问难题

深度解析 three-devtools 脚本注入机制:破解浏览器扩展跨上下文访问难题

深度解析 three-devtools 脚本注入机制:破解浏览器扩展跨上下文访问难题 【免费下载链接】three-devtools three.js devtools 项目地址: https://gitcode.com/gh_mirrors/th/three-devtools three-devtools 是一款 three.js 开发者工具(devtools&…

2026/8/25 9:48:48 阅读更多 →

最新新闻

中文商品评论情感分析实战:从数据处理到模型部署

中文商品评论情感分析实战:从数据处理到模型部署

简介:在自然语言处理(NLP)领域,情感分析是文本分类的重要分支,其核心原理是通过对文本特征(如词频、TF-IDF权重)进行建模,自动判断评论中的情感倾向。掌握机器学习与分词工具的工程实…

2026/8/26 12:30:55 阅读更多 →
Matlab diff函数深度解析:从数值微分到信号处理实战应用

Matlab diff函数深度解析:从数值微分到信号处理实战应用

1. 项目概述:从“求导”到“洞察”,diff函数的深度应用在Matlab的日常数据处理和科学计算中,diff函数绝对算得上是一位“沉默的劳模”。乍一看,它的功能简单明了——计算相邻元素的差值,也就是离散近似下的求导或差分。…

2026/8/26 12:30:55 阅读更多 →
Windows驱动自签名完整指南:PowerShell New-SelfSignedCertificate实战

Windows驱动自签名完整指南:PowerShell New-SelfSignedCertificate实战

1. 为什么必须亲手做驱动自签名——不是“点几下就能过”,而是绕不开的系统级门槛 Windows 驱动程序自签名,这六个字背后不是一条快捷命令,而是一整套与内核安全机制博弈的实操路径。我干驱动开发和企业级部署十多年,几乎每年都要…

2026/8/26 12:30:55 阅读更多 →
SAP固定资产底表核心架构与实战诊断指南

SAP固定资产底表核心架构与实战诊断指南

1. 什么是SAP固定资产相关底表?它到底管什么、谁在用、为什么非得搞懂它?“SAP固定资产相关底表”——这七个字,听上去像一串技术黑话,但对FICO顾问、财务系统运维、ERP实施工程师甚至大型制造企业的资产会计来说,它不…

2026/8/26 12:30:55 阅读更多 →
Windows电源计划优化:解决蓝屏与掉盘问题的系统稳定性指南

Windows电源计划优化:解决蓝屏与掉盘问题的系统稳定性指南

1. 从一次深夜蓝屏说起:电源计划这个“隐形杀手” 那天晚上,我正赶一个项目报告,电脑突然毫无征兆地蓝屏了。屏幕上闪过一串熟悉的错误代码,然后自动重启。这已经是本周第三次了。更糟的是,重启后,我发现刚…

2026/8/26 12:29:55 阅读更多 →
MySQL条件判断函数实战:IF、CASE WHEN与COALESCE系统化应用

MySQL条件判断函数实战:IF、CASE WHEN与COALESCE系统化应用

1. 这不是函数列表,而是一套MySQL条件决策系统 你有没有遇到过这样的场景:报表里要根据销售额自动标注“高潜力”“需跟进”“待观察”,但写了一堆嵌套IF又怕别人看不懂;或者订单状态字段存的是数字码(0待支付&#xf…

2026/8/26 12:29:55 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →