Skip to main content

难点:Cursor 拆分文件后,Xcode 不显示

补充难点:Cursor 拆分文件后,Xcode 不显示

这是重构 Services/ 时很常见的一类问题,和「单文件太大」是两件独立的事,但会叠在一起加重挫败感。

现象

Cursor 里新建/拆出多个 Swift 文件(如 EthereumTransactionService.swiftBitcoinTransactionTypes.swift),磁盘上文件已经存在,但 Xcode 左侧 Project Navigator 里看不到,或目录结构不对。

当时因为不熟悉机制,做了 Clean、删 DerivedData、重新 pod install / 重新 link 等操作;后来才发现,很多时候 手动处理就够了


原因(本质)

Cursor 和 Xcode 管的是两件不同的事:

CursorXcode
做什么在磁盘上创建/修改文件维护 工程导航树.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、重建工程

这些往往 解决不了「导航树不刷新」,还浪费时间。

实际够用(你后来发现的「手动就可以」):

  1. 在 Xcode 里手动加入文件(最常见)

    • 打开 PodsDevelopment PodsExpoWalletCore
    • 右键目标分组 → Add Files to "ExpoWalletCore"...
    • 选中 ios/Services/ 下新文件
    • 勾选 Copy items if needed 一般 不要勾(文件已在模块目录里)
    • 勾选对应 Target
  2. 轻量刷新(先试这个)

    • 关 Xcode → 项目根目录执行 cd ios && pod install → 再开 Xcode
  3. 确认编译是否真的缺文件

    • 若 build 报 Cannot find 'XxxTransactionService' in scope,才是文件没进编译源
    • 若 build 成功只是导航里没有,多半是 纯 UI 显示问题

和「Services 拆分」的关系

问题层面解决方向
单文件太大、AI 上下文爆炸架构按链拆成 XxxService + XxxTypes
Cursor 新建文件 Xcode 不显示工具链手动 Add Files 或 pod install 刷新

拆分后文件数量从 1 个变成 20+,这类 Xcode 不同步会频繁出现;熟悉「磁盘有文件 ≠ 导航树已更新」之后,就不用再靠大清理来「修 link[data]。


可写进文档的一句话

难点:在 Cursor 中拆分 Swift 文件后,Xcode 导航树未同步更新,误以为模块 link 损坏并做了不必要的 clean/relink。
方案:理解 Expo 本地 Pod 通过 source_files glob 参与编译;新文件在 Xcode 中 Add Filespod install 后重开 即可,无需重建 link。


以后拆新链时的建议顺序

  1. 在 Cursor 创建 XxxTransactionTypes.swift + XxxTransactionService.swift
  2. ExpoWalletCoreModule.swift 注册接口
  3. cd ios && pod install
  4. 打开 Xcode,若导航里没有 → Add FilesExpoWalletCore 分组
  5. Build 验证

如果你需要,我可以把「单文件重构」和「Xcode 同步」合并成一份完整的 项目难点与解决方案 文档(中英各一版),方便对内分享或写进 README。