
- 删除CreateFeedView-Analysis.md文档以简化项目结构。 - 新增UserAgreementComponent以处理用户协议的显示和交互。 - 更新多个视图中的onChange逻辑以兼容iOS 17的新API用法,确保代码一致性和可维护性。 - 在Localizable.strings中新增用户协议相关的本地化文本,提升多语言支持。
67 lines
1.9 KiB
Markdown
67 lines
1.9 KiB
Markdown
# onChange iOS 17 迁移总结
|
|
|
|
## 概述
|
|
将项目中所有使用已弃用的 `onChange(of:perform:)` API 的代码修改为 iOS 17 建议的新用法。
|
|
|
|
## 修改内容
|
|
|
|
### 修改规则
|
|
- **旧用法**: `onChange(of: value) { newValue in ... }`
|
|
- **新用法**: `onChange(of: value) { oldValue, newValue in ... }`
|
|
|
|
### 修改的文件列表
|
|
|
|
1. **LoginView.swift** - 3处修改
|
|
- `store.isAnyLoginCompleted` 监听
|
|
- `showIDLogin` 监听
|
|
- `showEmailLogin` 监听
|
|
|
|
2. **MainView.swift** - 3处修改
|
|
- `store.isLoggedOut` 监听
|
|
- `path` 监听
|
|
- `store.navigationPath` 监听
|
|
|
|
3. **EMailLoginView.swift** - 4处修改
|
|
- `store.loginStep` 监听
|
|
- `email` 监听
|
|
- `verificationCode` 监听
|
|
- `store.isCodeLoading` 监听
|
|
|
|
4. **RecoverPasswordView.swift** - 4处修改
|
|
- `email` 监听
|
|
- `verificationCode` 监听
|
|
- `newPassword` 监听
|
|
- `store.isResetSuccess` 监听
|
|
|
|
5. **ImagePickerWithPreviewView.swift** - 2处修改
|
|
- `viewStore.inner.isLoading` 监听
|
|
- `viewStore.inner.selectedPhotoItems` 监听
|
|
|
|
6. **EditFeedView.swift** - 1处修改
|
|
- `store.shouldDismiss` 监听
|
|
|
|
7. **DetailView.swift** - 1处修改
|
|
- `store.shouldDismiss` 监听
|
|
|
|
8. **MeView.swift** - 1处修改
|
|
- `detailStore.shouldDismiss` 监听
|
|
|
|
9. **IDLoginView.swift** - 1处修改
|
|
- `store.loginStep` 监听
|
|
|
|
10. **ContentView.swift** - 1处修改
|
|
- `selectedLogLevel` 监听
|
|
|
|
## 总计
|
|
- **修改文件数**: 10个
|
|
- **修改处数**: 20处
|
|
- **状态**: ✅ 完成
|
|
|
|
## 验证结果
|
|
通过 grep 搜索确认所有 `onChange(of:perform:)` 调用都已成功迁移到新 API。
|
|
|
|
## 注意事项
|
|
1. 新 API 提供了 `oldValue` 和 `newValue` 两个参数
|
|
2. 在大多数情况下,我们只使用了 `newValue` 参数,`oldValue` 用 `_` 忽略
|
|
3. 所有原有逻辑保持不变,只是 API 调用方式更新
|
|
4. 修改后的代码完全兼容 iOS 17+ 的要求 |