Eureka 5.5.0 版本演进史从 Swift 3 迁移到 Apple 隐私合规的 iOS 表单框架 CHANGELOG 全解析【免费下载链接】EurekaElegant iOS form builder in Swift项目地址: https://gitcode.com/gh_mirrors/eur/EurekaEureka 是一款基于 Swift 的优雅 iOS 表单构建框架其 CHANGELOG.md 完整记录了从 2015 年 1.0.0 首发到 5.5.0 的每一个里程碑既有 Swift 3/4/5 大版本迁移与 API 重命名配合 Eureka 2.0 Migration Guide也有验证系统、Swipe Actions、Multivalued Sections、Result Builders 等核心能力的引入更包含 Xcode 13、iOS 14、M1 模拟器等现代开发环境的兼容性修复。读完本文你将掌握 Eureka 各版本的能力边界、关键 API 的演变脉络以及如何依据 CHANGELOG 判断某个特性在当前仓库中的落地位置。一、版本总览从 1.0.0 到 5.5.0 的演进主线当前仓库以 Eureka.podspec 声明的版本号5.5.0为最新稳定版s.version 5.5.0并满足swift-tools-version:5.0见 Package.swift。CHANGELOG 记录了 5 个大版本的完整演进大版本核心主题里程碑要点1.x表单框架成型PickerRow、StepperRow、PostalAddressRow、List Sections、键盘导航2.0Swift 3 内置验证全面适配 Swift API Design Guidelines引入 Rules / ValidationOptions / Swipe Actions3.0–3.1稳定性与验证增强RuleEqualsToRow、精确长度验证、按需验证、PickerInputRow4.0–4.3Swift 4 现代化Swift Package Manager、暗黑模式、Xcode 10/11/12 兼容、Multivalued 增强5.x隐私与工具链适配PrivacyInfo 文件、Xcode 13 / M1 模拟器 / Mac Catalyst 兼容、键盘与滚动优化从发布节奏看CHANGELOG 还透露了支持范围的变化2.0.0 要求 Xcode 8 与 Swift 3、最低 iOS 8.05.0.0 将最低版本提高到 iOS 9.3当前仓库的 Package.swift 声明platforms: [.iOS(.v9)]Eureka.podspec 同样声明s.ios.deployment_target 9.0即现版本最低支持 iOS 9。二、2.0 大版本Swift 3 迁移与验证体系诞生2.1 Swift 3 API 重命名对照表Eureka 2.0.0 是分水岭版本它彻底拥抱 Swift 3遵循新版 API Design Guidelines大量方法被重命名。官方在 Eureka 2.0 Migration Guide 中给出了新旧 API 对照表CHANGELOG 则指出大多数改动 Xcode 会自动建议修复。核心对照如下旧 API新 APIfunc rowByTagT: Equatable(_: String) - RowOfT?func rowByT: Equatable(tag: String) - RowOfT?func rowByTagRow: RowType(_: String) - Row?func rowByRow: RowType(tag: String) - Row?func sectionByTag(_: String) - Section?func sectionBy(tag: String) - Section?func rowValueHasBeenChanged(_:oldValue:newValue:)func valueHasBeenChanged(for:oldValue:newValue:)public final func indexPath() - IndexPath?public final var indexPath: IndexPath?func prepareForSegue(_ segue: UIStoryboardSegue)func prepare(for segue: UIStoryboardSegue)func presentViewController(_:row:presentingViewController:)func present(_:row:presentingViewController:)func createController() - VCType?func makeController() - VCType?以当前源码为例新版rowBy(tag:)就落地在 Form.swift 中成为读取行值的标准入口见下文三、核心能力。2.2 2.0 的删除与新增被删除的 APIPostalAddressRow与ImageRow被移出主仓库转入 EurekaCommunity 社区组织Row.highlightCell()、Row.unhighlightCell()、Cell.highlight()、Cell.unhighlight()、Cell.didSelect()被移除改用row.isHighlighted属性在 cell update 时判断高亮状态。新增的能力行与表单的validate()、add(rule:)、remove(ruleWithIdentifier:)、RuleSetT、ValidationOptions、RuleType协议、ValidationError类型以及onCellHighlightChanged/onRowValidationChanged回调。这套验证体系至今仍是核心ValidationError、RuleType、ValidationOptions、RuleSet的完整定义都保留在 Validation.swift 中。三、核心能力速查验证、Swipe 与 MultivaluedCHANGELOG 反复提及的三项核心能力在 README.md 中有完整用法在源码中有确切实现是理解 Eureka 技术架构的关键。3.1 内置验证规则ValidationsEureka 2.0 引入内置验证后CHANGELOG 在 3.0 继续补齐RuleEqualsToRow、精确长度验证5.0.1 则修正了RuleMinLength等规则对 nil 与空字符串的处理。当前仓库 Source/Validations 目录下共有 9 个规则文件规则文件说明RuleRequired.swift必填RuleEmail.swift邮箱格式RuleURL.swiftURL 格式4.1.0 修复正则以支持 query 与 location 参数RuleLength.swift最小/最大/精确长度RuleRange.swift数值范围GreaterThan 等RuleRegExp.swift正则3.0 起支持允许空值且类访问级别为 openRuleEqualsToRow.swift与其他行值相等3.0 新增RuleClosure.swift自定义闭包规则RuleEqualsToRow.swift参见上行通过add(rule:)挂载规则通过validationOptions决定求值时机。ValidationOptions在 Validation.swift 中被定义为 OptionSet四个取值均可独立或组合使用.validatesOnDemand1 0手动调用validate()时求值.validatesOnChange1 1行值变化即求值.validatesOnBlur1 2默认值失去焦点时求值.validatesOnChangeAfterBlurred1 3失焦后值变化才求值.validatesAlways[.validatesOnChange, .validatesOnBlur]的组合便捷值。验证错误的承载结构ValidationError仅含msg: String由RuleType.isValid(value:)返回这与 Validation.swift 的定义一一对应。3.2 Swipe Actions滑动手势操作4.1.0 引入 Swipe Actions 后5.2.0 修复了 iOS 13 下 destructive 滑动删除不再自动移除行的问题需要 completion handler 中自行移除。滑动操作与表单编辑模式互斥——Swipe Actions 要求tableView.isEditing false而 MultivaluedSection 会自动开启编辑模式两者并存时需手动设置isEditing。核心实现位于 SwipeActions.swiftSwipeAction支持style.destructive/.normal、title、image、actionBackgroundColor其中 iOS 11 以上映射为UIContextualActioniOS 13 起由框架负责在 completion 后移除行。3.3 Multivalued Sections多值分区Multivalued 能力在 3.1 修复了 ImageRow 图片不显示的问题5.2.0 新增GenericMultivaluedSection以支持自定义添加按钮类型。选项集合MultivaluedOptions定义在 Section.swift.Insert、.Delete、.Reorder、.None可自由组合GenericMultivaluedSectionAddButtonTypeSection.swift允许用任意RowType作为添加按钮例如用LabelRow替换默认的ButtonRow。四、5.x 时代隐私合规与工具链适配5.x 系列的主题是适配现代 Apple 生态各修复点几乎都可以在当前仓库中找到对应文件版本修复/特性仓库落地证据5.5.0创建 PrivacyInfo 文件#2255PrivacyInfo.xcprivacy 声明仅收集App Functionality用途、不跟踪、不关联的数据类型5.4.0重命名与私有 ObjC 方法冲突的方法名#2231消除 App Store 上传警告5.3.6修复键盘 done 按钮问题#2213对应 NavigationAccessoryView.swift 键盘附件视图逻辑5.3.5Xcode 13 编译修复、CI 迁移至 GitHub Actions、外部键盘 Tab 键崩溃修复Example.xcodeproj / Eureka.xcodeproj 工程配置5.3.4中文输入问题、邮箱用户名允许特殊字符、SliderRow 渲染修复RuleEmail.swift 正则放宽、SliderRow.swift5.3.3键盘出现时的 ScrollPosition 行为可配置、移除 EXCLUDED_ARCHS 以支持 M1 模拟器、replace/removeAll方法replaceSubrange与removeAll实现在 Form.swift 与 Section.swift5.3.2tableViewStyle公开、修复 CountDown 崩溃、Carthage Xcode 12 构建FormViewController.swift 中的表格样式属性5.3.1Mac Catalyst 构建修复、datePickerStyle修复、PasswordRow 字体调整DateFieldRow.swift5.2.1废弃tableView:editActionsForRowAt、iOS 13.4 崩溃修复对应 Swipe Actions 体系5.2.0Swift Package Manager 支持、GenericMultivaluedSection、修复引用循环、允许 section header/footer 为 nilPackage.swift 声明swift-tools-version:5.0与platforms: [.iOS(.v9)]5.1.0Xcode 11 / iOS 13 支持、暗黑模式Example/Controllers 示例工程5.0.xquietly参数非 UI 验证、验证规则对 nil/空串放行Validation.swift 相关求值路径4.1 从 CHANGELOG 到源码的追溯方法以 5.3.3 的Add replace method for all sections为例CHANGELOG 只给出一行描述但在源码中可定位到 Section.swift 的replaceSubrange(_:with:)与 Form.swift 的replaceSubrangeInAllSections印证该能力同时覆盖了 Section 与 Form 两个层级。类似的Addinsert(row: after:)4.3.0与isExpanded/isCollapsed3.0也分别能在 Section.swift 与 InlineRowType.swift 中找到对应实现。五、1.x 时代沉淀的经典能力虽然 1.x 已是历史版本但 CHANGELOG 记录的能力大多沿袭至今且仍在 Source/Rows 目录中PickerRow / PickerInlineRow1.2.04.2.0 扩展为 2/3 组件→ PickerRow.swift、PickerInlineRow.swiftStepperRow1.5.0→ StepperRow.swift3.0 起其值展示统一走displayValueForList SectionsSelectableSection1.3.0→ SelectableSection.swift支持单选/多选与分组3.0 修复了禁用行仍可被选中的问题键盘 Next 按钮1.3.0→ NavigationAccessoryView.swift1.6.0 起inputAccessoryViewForRow可从 FormViewController 中重写TextAreaRow 自动高度1.6.0→ TextAreaRow.swift4.2.0 又增加了只读readOnly特性。5.1 2.0 迁移中的自定义 Row 写法变化CHANGELOG 2.0.0 提到自定义 Row 的泛型写法发生变化官方迁移文档给出了前后对照// 2.0 之前显式声明 Value 类型 public final class WeekDayRow: RowSetWeekDay, WeekDayCell, RowType // 2.0 之后Value 类型由 Cell 推断 public final class WeekDayRow: RowWeekDayCell, RowType这一改动与Row 不再直接指定值类型、由 Cell 推断的设计一致迁移文档还提醒SelectorRow从 1.4.1 起要求泛型包含 Cell例如SelectorRowCLLocation, MapViewController, PushSelectorCellCLLocation。六、升级与维护建议API 命名以当前版本为准即使看到旧教程中的rowByTag/prepareForSegue也应替换为 Form.swift 中现行的rowBy(tag:)/prepare(for:)2.0 迁移文档中罗列的重命名清单Eureka 2.0 Migration Guide至今仍有参考价值。Swift 版本与部署目标当前仓库要求 Swift 5swift_version 5.0见 Eureka.podspec、iOS 9Package.swift。验证行为差异若从 5.0 之前升级注意RuleMinLength等规则对 nil / 空字符串的判定在 5.0.1 已放宽现有表单的校验结果可能随之变化建议结合validationOptionsValidation.swift重新审视各行的求值时机。滑动与编辑模式冲突MultivaluedSection 与 Swipe Actions 并存时tableView.isEditing需按业务手动控制SwipeActions.swift。七、结语Eureka 的 CHANGELOG 本身就是一部浓缩的 iOS 表单框架发展史从 Swift 3 的 API 大清洗、内置验证体系落地到 Swift Package Manager、暗黑模式、隐私合规与 M1/Xcode 13 兼容每一次版本跃迁都对应着明确的源码变更。对开发者而言CHANGELOG 不仅是升级手册更是定位源码能力的索引——当你在版本记录中看到某个特性或修复时沿着本文给出的文件路径就能在 Source 目录中直接找到它的实现与使用方式。【免费下载链接】EurekaElegant iOS form builder in Swift项目地址: https://gitcode.com/gh_mirrors/eur/Eureka创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
okbiye 论文格式排版功能实测|ai 论文软件一键搞定毕业论文格式难题 2026 毕业季,很多应届生论文正文写完,却卡在格式排版环节。毕业论文格式有着严格的规范,不同院校对页眉页脚、目录、字体字号、段落缩进、图表编号、参考文献 GB/T7714 格式都有专属要求。不少同学耗费数天时间手动调整 Word 格式,… · 2026/9/23 9:56:49
33ee源码深潜:一文搞懂核心架构避坑指南 33ee源码深潜:一文搞懂核心架构避坑指南 刚跑通Hello World,转头就懵了?这是很多开发者的真实写照。语法背得滚瓜烂熟,一搭项目就乱套,根本不知从何下手。今天不整虚的,直接拆解 33ee 核心实现,带你一文搞懂底层逻辑。… · 2026/9/23 9:56:43
Pore-C技术解析基因组三维结构:原理、流程与应用 1. Pore-C技术背景与核心价值基因组三维结构解析是后基因组时代的重要研究方向。传统Hi-C技术虽然能够捕获染色质空间互作信息,但在分辨率、通量和成本之间始终存在难以调和的矛盾。华大基因(BGI)研发的Pore-C技术,基于纳米孔测序… · 2026/9/23 9:56:36
在线答疑实战图解原理:Python与Java处理并发请求的深度对比 在线答疑实战图解原理:Python与Java处理并发请求的深度对比 刚复制了一段高并发处理代码,本地跑起来直接报错,堆栈信息长得像天书,连个报错原因都看不出来?别急,这种“复制粘贴即死机”的坑,90%的开发者都踩过。今天咱们不聊虚的,直接通… · 2026/9/23 12:12:40
Python实现手机操作日志采集与分析实战 1. 项目背景与核心价值手机操作日志采集与分析是移动应用开发、用户体验优化以及质量保障领域的基础性工作。传统的手动测试和基础埋点往往存在两个痛点:一是测试覆盖率有限,难以捕捉真实用户场景中的异常情况;二是日志数据分散,缺… · 2026/9/23 12:12:27
电压增益与dB值换算全解析:从20log到放大电路增益计算 搞懂电压增益和dB值换算,调电路心里就有底了。这些年测试放大器、调音频设备,经常碰到有人拿着万用表测完输出电压,却算不清增益到底是多少dB。说实话这玩意儿不难,但20log和10log老有人搞混,分压电阻对增益的影响也容… · 2026/9/23 12:12:27
rdseed 5.3.1 Linux编译与SEED/SAC格式转换实战指南 简介:rdseedv5.3.1 是一款运行于 Linux 环境的地震数据处理工具,核心功能是将 SEED 格式的地震观测数据转换为 SAC 可识别的格式,面向地震学研究者、台站数据处理人员及具备一定 Linux 命令行基础的科学计算用户。压缩包共 454 个文件&#x… · 2026/9/23 12:12:27
Dart SDK版本发布机制揭秘:实验特性从Flag引入到退役的完整生命周期 Dart SDK版本发布机制揭秘:实验特性从Flag引入到退役的完整生命周期 【免费下载链接】sdk The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. 项目地址: https://gitcode.com/gh_mirrors/sdk1/sdk
Dart SDK 是 D… · 2026/9/23 12:12:21
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29