修复 PIBaseModel 依赖链问题

核心修复:
- NewMomentViewController: 改为直接继承 UIViewController
- NewMineViewController: 改为直接继承 UIViewController
- 不再继承 BaseViewController(避免 ClientConfig → PIBaseModel 依赖链)

依赖链问题分析:
BaseViewController → ClientConfig → ClientDataModel → PIBaseModel
ClientConfig 本身也继承自 PIBaseModel

切断依赖链后,Bridging Header 只需要 UIKit + 3 个新模块,
不会引入任何复杂的 Model 依赖。

这样做的好处:
1. 编译不会有 PIBaseModel 错误
2. 新模块完全独立,不依赖旧代码
3. 更符合白牌项目的目标(完全不同的代码结构)
This commit is contained in:
edwinQQQ
2025-10-09 18:49:44 +08:00
parent 1e759ba461
commit bf31ffda51
8 changed files with 1081 additions and 44 deletions

151
BUILD_GUIDE.md Normal file
View File

@@ -0,0 +1,151 @@
# 白牌项目构建指南
## ⚠️ 重要:使用 Workspace 而不是 Project
**错误方式**
```bash
xcodebuild -project YuMi.xcodeproj -scheme YuMi build ❌
```
**正确方式**
```bash
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi build ✅
```
## 为什么?
因为项目使用了 **CocoaPods**
- CocoaPods 会创建 `.xcworkspace` 文件
- Workspace 包含了主项目 + Pods 项目
- 直接用 `.xcodeproj` 编译会找不到 Pods 中的库(如 MJRefresh
## 在 Xcode 中打开项目
**正确方式**
1. 打开 `YuMi.xcworkspace`(双击这个文件)
2. 不要打开 `YuMi.xcodeproj`
**验证方式**
- 打开后,左侧应该看到 2 个项目:
- YuMi主项目
- Pods依赖项目
## 编译项目
### 方式 1在 Xcode 中(推荐)
1. 打开 `YuMi.xcworkspace`
2. 选择真机设备iPhone for iPhone
3. `Cmd + B` 编译
4. 修复任何错误
5. `Cmd + R` 运行(如果需要)
### 方式 2命令行
```bash
cd "/Users/edwinqqq/Local/Company Projects/E-Parti"
# 清理
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi clean
# 编译(真机)
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi \
-destination 'generic/platform=iOS' \
-configuration Debug \
build
```
## Build Settings 配置验证
在 Xcode 中:
1. 打开 `YuMi.xcworkspace`
2. 选择 YuMi Target
3. Build Settings → 搜索框输入以下关键词并检查:
| 设置项 | 期望值 | 状态 |
|--------|--------|------|
| **Swift Objc Bridging Header** | `YuMi/YuMi-Bridging-Header.h` | ✅ 已配置 |
| **Swift Version** | `Swift 5` | ✅ 已配置 |
| **Defines Module** | `YES` | ✅ 已配置 |
## 常见错误排查
### 错误 1: `'MJRefresh/MJRefresh.h' file not found`
**原因**:使用了 `.xcodeproj` 而不是 `.xcworkspace`
**解决**:使用 `.xcworkspace` 打开和编译
### 错误 2: `SwiftGeneratePch failed`
**原因**Bridging Header 中引用的头文件找不到
**解决**
1. 确保使用 `.xcworkspace`
2. 检查 Bridging Header 中的所有 `#import` 是否正确
3. 确保所有依赖的 Pod 都安装了
### 错误 3: `Cannot find 'HttpRequestHelper' in scope`
**原因**Bridging Header 路径未配置
**解决**已修复Build Settings 中设置了正确路径
## 当前项目配置
### 文件结构
```
E-Parti/
├── YuMi.xcworkspace ← 用这个打开!
├── YuMi.xcodeproj ← 不要用这个
├── Podfile
├── Pods/ ← CocoaPods 依赖
├── YuMi/
│ ├── YuMi-Bridging-Header.h ← Swift/OC 桥接
│ ├── Config/
│ │ └── APIConfig.swift ← API 域名配置
│ ├── Global/
│ │ └── GlobalEventManager.h/m ← 全局事件管理
│ └── Modules/
│ ├── NewTabBar/
│ │ └── NewTabBarController.swift
│ ├── NewMoments/
│ │ ├── Controllers/
│ │ │ └── NewMomentViewController.h/m
│ │ └── Views/
│ │ └── NewMomentCell.h/m
│ └── NewMine/
│ ├── Controllers/
│ │ └── NewMineViewController.h/m
│ └── Views/
│ └── NewMineHeaderView.h/m
```
### Swift/OC 混编配置
**Bridging Header**`YuMi/YuMi-Bridging-Header.h`
- 引入所有需要在 Swift 中使用的 OC 类
- 包括第三方 SDKNIMSDK, AFNetworking
- 包括项目的 Models、Managers、Views
**Build Settings**
- `SWIFT_OBJC_BRIDGING_HEADER = YuMi/YuMi-Bridging-Header.h`
- `DEFINES_MODULE = YES`
- `SWIFT_VERSION = 5.0`
## 验证配置是否成功
编译成功后,应该能在 Console 看到:
```
[NewTabBarController] 初始化完成
[APIConfig] 解密后的域名: https://api.epartylive.com
[GlobalEventManager] SDK 代理设置完成
```
---
**更新时间**: 2025-10-09
**状态**: ✅ 配置已修复
**下一步**: 使用 YuMi.xcworkspace 在 Xcode 中编译