感受 Swift 的魅力:一键导出 DataFrame
随着对 Swift 理解的不断深入,它的魅力在我眼中愈发耀眼。Swift 让我能以清晰、准确、安全、现代且优雅的方式表达编程思想。本文展示如何使用 Swift 构建一个通用的 DataFrame 导出工具,借助泛型、KeyPath、协议扩展、条件映射与 ResultBuilder,实现类型安全、可配置的数据导出功能,充分体现 Swift 的现代化表达力与灵活性。
随着对 Swift 理解的不断深入,它的魅力在我眼中愈发耀眼。Swift 让我能以清晰、准确、安全、现代且优雅的方式表达编程思想。本文展示如何使用 Swift 构建一个通用的 DataFrame 导出工具,借助泛型、KeyPath、协议扩展、条件映射与 ResultBuilder,实现类型安全、可配置的数据导出功能,充分体现 Swift 的现代化表达力与灵活性。
不知不觉,距离 WWDC 2025 开始只有 20 天了。在过去的几年中,每当此时我都会写几篇文章畅想 WWDC 上会带来的新功能和我期待的一些变化。然而,或许是因为最近两年 WWDC 上展示的许多新功能并未完全落地,就我个人而言,今年似乎少了往日的热情和渴望。希望这只是我个人的情况。
在 SwiftUI 的众多 API 中,.ignoredByLayout() 算是一位“低调的成员”。相关资料稀少,应用场景也不常见,其名称本身就容易引发困惑。它似乎暗示着某种对布局的“忽略”,但这与我们熟知的 offset 或 scaleEffect 等修饰符默认不影响父布局的行为有何不同? ignoredByLayout 究竟在什么时机工作?它到底“忽略”或“隐瞒”了什么?本文将为你揭开这个 SwiftUI 布局机制中微妙 API 的面纱。
几天前,一位之前高度赞扬并全身投入 Vibe Coding 的好友发表了一篇推文,表达了他近期基于 AI 编程的挫败感:最近的 Vibe Coding 并没有给我写代码带来任何愉悦感,正相反的是 AI 无法一击必中带来的挫败感。开始重新阅读官方文档和优质视频,自下而上,那种对项目的掌控感又回来了。
Swift 5.9 推出 package 访问修饰符,帮助开发者限制 API 在多个 Target 间共享但不对外暴露,提升模块化项目的封装性与安全性
在日常生活里,人们经常需要在各种度量衡单位之间转换。对开发者而言,实现这类功能看似简单:写几行公式、做几次 switch,似乎就能完成任务。但当你希望同时支持数十种单位、无缝国际化,并且还要考虑格式化、精度、舍入等细节时,工作量立刻飙升,且枯燥到足以让人怀疑人生。好消息是——从 iOS 10 起,苹果在 Foundation 中加入了完善的 Measurement API,帮我们把这一切“苦力活”都完成了。本文将带你系统地了解它的用法与实践。
几天前,Epic Games 与 Apple 案迎来了一项重要裁决。法官认定 Apple 故意违反了法院于 2021 年发布的反垄断永久禁令。法院不仅批准了 Epic 提交的执行禁令动议,还罕见地将 Apple 的行为移交给美国司法部加州北区检察官,以调查其是否构成刑事藐视法庭。
NavigationLink 是 SwiftUI 开发者非常喜欢使用的一个组件,它巧妙地结合了 Button 和导航跳转逻辑,大大简化了代码实现。但在某些场景下不恰当地使用它可能会导致严重的性能问题,使应用响应变得迟缓。本文将尝试分析这个问题的成因,并提供一个实用但略显神秘(无奈)的解决方案——使用 equatable() 修饰器来优化性能。
美国司法部(DOJ)与谷歌之间的反垄断诉讼近期取得了重大进展。法院认定,谷歌通过将其广告服务器与广告交易平台捆绑销售,以及操控广告拍卖机制等行为,排挤了竞争对手,损害了出版商和消费者的利益。作为补救措施的讨论之一,美国司法部正在考虑建议强制谷歌出售其 Chrome 浏览器,并终止与设备制造商的默认搜索引擎协议。继传闻将以 30 亿美金收购 WindSurf 后,OpenAI 在上述判决之后立刻表达了对 Chrome 的收购兴趣。
在 Swift Monorepo 中确保 SwiftLint 正常工作,需在 VSCode 设置中明确配置文件路径,并指定需要 lint 的源码目录
Swift 强大的类型系统使我们能够创建语义明确且安全的数据模型。然而,当面对 SwiftData 或 Core Data 时,我们常因底层存储机制的限制,而不得不在类型表达上做出妥协。这种妥协不仅模糊了领域模型的本意,也为应用的稳定性埋下隐患。本文将探索如何在数据持久化的约束下,通过巧妙的类型封装和转换,构建兼具类型安全、语义明确与高效性能的数据模型。
在上周一,我的博客的 HTTPS 证书出现了短暂的失效。好在失效后五分钟,就有热心网友提醒了我。联系云服务商后发现,是对方处理 SSL 证书自动续签的代码出现了故障。经过两个小时的排查,问题得以解除,网站恢复了正常。
随着 AI 能力的快速提高,低代码甚至无代码的时代似乎即将到来。然而,过去一年间,针对专业开发者的各类编程工具并未减少,反而层出不穷。无论是 AI 辅助编程的突破,还是协作、跨平台能力的持续提升,都在证明着专业开发者仍是不可或缺的重要群体。反观苹果生态,作为最重要的开发工具,Xcode 近年来却未能带来真正令人振奋的改变。在这篇文章中,我将分享自己对未来 Xcode 的几点期望。
在 VSCode 或 Cursor 中测试 Core Data 时,需使用 Xcode 工具链并手动将 xcdatamodeld 转换为 momd,以确保单元测试正常运行。
不久前,微软对 Github Copilot 进行了相当程度的功能增强,除了添加了对 MCP 的支持外,在 AI 交互模式上也提供了与 Cursor 对齐的 Agent 模式,至此,Github Copilot 大大缩小了与其他 AI 代码工具领先者之间的差距。考虑到其更低的定价策略( $10/月 ),明显微软已做好了全力进入商业 AI 辅助市场/服务的准备。
随着 Swift 6.1 版本的正式发布,SwiftWasm 也迎来了重大升级。这一里程碑式的更新标志着 SwiftWasm 首次实现了完全基于官方 Swift 开源工具链的构建——告别了自定义补丁的时代,不仅显著简化了开发者的安装流程,大幅节省了系统存储空间,更为重要的是,这种纯正构建方式极大降低了平台的维护成本,为 Swift 生态系统注入了新的活力。在本文中,我们将探索如何利用 Swift 构建 WebAssembly 应用,带你领略 Swift 跨平台开发的无限可能。
不久前,某个造成三人死亡的交通事故因为涉及某新锐电动汽车品牌再度引发了人们对“智能驾驶”功能的质疑。在目前披露的有限资料中,至少可以确认的是,“智能驾驶”系统未能在相当长的一段行驶距离中判断出当前的路段正在施工(沿途有施工警示标志),只在撞击前2-3秒前给予了警示。这意味着,在系统报警后,驾驶者只有极短的反应时间。
在 SwiftUI 开发中,环境值 dismiss 因其灵活、自适应的特性备受开发者青睐。它能够根据当前视图的上下文智能执行关闭操作:在模态视图中关闭窗口、在导航堆栈中弹出视图,甚至在多列导航容器中自动关闭边栏。正是这种看似“万能”的便捷性,让许多开发者将它作为首选工具。然而,便捷的背后往往隐藏着风险。频繁使用 dismiss 可能在应用程序中埋下隐患,引发测试难题乃至难以追踪的稳定性问题。本文将分析我们为何应谨慎对待 dismiss,并介绍更加健壮可靠的状态管理方案。通过重新审视视图呈现与消失的逻辑,我们能够打造出更稳定、易维护且可预测的 SwiftUI 应用。
在最近一段时间,在社交网络上,越来越多的 Model Context Protocol(MCP)使用者展示了各种丰富多彩的应用场景,从操控 Blender 创建精美场景,到利用最新的 GPT-4o 图片构建完整的漫画故事。MCP 巧妙地打开了以文本为主要互动手段的大模型,与现实世界之间的大门。