难点:Cursor 拆分文件后,Xcode 不显示
补充难点:Cursor 拆分文件后,Xcode 不显示
这是重构 Services/ 时很常见的一类问题,和「单文件太大」是两件独立的事,但会叠在一起加重挫败感。
现象
在 Cursor 里新建/拆出多个 Swift 文件(如 EthereumTransactionService.swift、BitcoinTransactionTypes.swift),磁盘上文件已经存在,但 Xcode 左侧 Project Navigator 里看不到,或目录结构不对。
当时因为不熟悉机制,做了 Clean、删 DerivedData、重新 pod install / 重新 link 等操作;后来才发现,很多时候 手动处理就够了。
原因(本质)
Cursor 和 Xcode 管的是两件不同的事:
| Cursor | Xcode | |
|---|---|---|
| 做什么 | 在磁盘上创建/修改文件 | 维护 工程导航树(.xcodeproj / Pods 工程里的分组) |
| 是否自动同步 | — | 不会自动扫描 Cursor 新建的文件到导航树 |
expo-wallet-core 是本地 Development Pod:
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
CocoaPods 用 glob 匹配 ios/ 下所有 Swift 文件。因此:
- 编译:跑过
pod install后,新文件通常 已经参与编译,即使导航里暂时看不到 - 显示:Xcode 左侧树 不一定会立刻反映 Cursor 新建的目录/文件
所以会出现:代码能编过,但 Xcode 里「看不见」,容易误以为 link 坏了。
当时走弯路 vs 实际可用的做法
走弯路(通常不必):
- Clean Build Folder
- 删 DerivedData
- 反复 unlink / relink 模块
- 重装 Pods、重建工程
这些往往 解决不了「导航树不刷新」,还浪费时间。
实际够用(你后来发现的「手动就可以」):
-
在 Xcode 里手动加入文件(最常见)
- 打开
Pods→Development Pods→ExpoWalletCore - 右键目标分组 → Add Files to "ExpoWalletCore"...
- 选中
ios/Services/下新文件 - 勾选 Copy items if needed 一般 不要勾(文件已在模块目录里)
- 勾选对应 Target
- 打开
-
轻量刷新(先试这个)
- 关 Xcode → 项目根目录执行
cd ios && pod install→ 再开 Xcode
- 关 Xcode → 项目根目录执行
-
确认编译是否真的缺文件
- 若 build 报
Cannot find 'XxxTransactionService' in scope,才是文件没进编译源 - 若 build 成功只是导航里没有,多半是 纯 UI 显示问题
- 若 build 报
和「Services 拆分」的关系
| 问题 | 层面 | 解决方向 |
|---|---|---|
| 单文件太大、AI 上下文爆炸 | 架构 | 按链拆成 XxxService + XxxTypes |
| Cursor 新建文件 Xcode 不显示 | 工具链 | 手动 Add Files 或 pod install 刷新 |
拆分后文件数量从 1 个变成 20+,这类 Xcode 不同步会频繁出现;熟悉「磁盘有文件 ≠ 导航树已更新」之后,就不用再靠大清理来「修 link[data]。
可写进文档的一句话
难点:在 Cursor 中拆分 Swift 文件后,Xcode 导航树未同步更新,误以为模块 link 损坏并做了不必要的 clean/relink。
方案:理解 Expo 本地 Pod 通过source_filesglob 参与编译;新文件在 Xcode 中 Add Files 或pod install后重开 即可,无需重建 link。
以后拆新链时的建议顺序
- 在 Cursor 创建
XxxTransactionTypes.swift+XxxTransactionService.swift - 在
ExpoWalletCoreModule.swift注册接口 cd ios && pod install- 打开 Xcode,若导航里没有 → Add Files 到
ExpoWalletCore分组 - Build 验证
如果你需要,我可以把「单文件重构」和「Xcode 同步」合并成一份完整的 项目难点与解决方案 文档(中英各一版),方便对内分享或写进 README。