|
|
|
|
- macOS 14.0+
- Xcode 15.0+
- iOS 17.0+ (模拟器或真机)
- Swift 5.9+
-
克隆仓库
git clone https://github.com/yourusername/ExpenseTracker.git cd ExpenseTracker -
打开项目
open ExpenseTracker.xcodeproj
-
运行应用
- 在 Xcode 中选择目标设备
- 点击运行按钮 (⌘R) 或选择
Product → Run
# 清理并构建
xcodebuild -scheme ExpenseTracker \
-destination 'platform=iOS Simulator,name=iPhone 15' \
clean build
# 运行测试
xcodebuild test -scheme ExpenseTracker \
-destination 'platform=iOS Simulator,name=iPhone 15'| 技术 | 用途 | 版本 |
|---|---|---|
| SwiftUI | 声明式 UI 框架 | 5.0+ |
| SwiftData | 数据持久化 | iOS 17+ |
| Combine | 响应式编程 | - |
| SF Symbols | 系统图标库 | 5.0 |
ExpenseTracker
├── 🎯 MVVM 架构模式
├── 🗂️ 模块化特性组织
├── 💾 SwiftData 本地存储
├── 🔄 响应式数据绑定
└── 🎨 原生 SwiftUI 组件
graph LR
A[Transaction 交易] --> B[Category 分类]
A --> C[Account 账户]
D[Budget 预算] --> B
ExpenseTracker/
├── 📱 App/ # 应用入口
│ ├── ExpenseTrackerApp.swift # 主应用文件
│ └── ContentView.swift # 根视图与导航
│
├── ✨ Features/ # 功能模块
│ ├── 💰 Transactions/ # 交易管理
│ │ ├── Models/ # 数据模型
│ │ │ └── Transaction.swift
│ │ └── Views/ # 视图组件
│ │ ├── EditTransactionView.swift
│ │ └── CustomNumericKeyboard.swift
│ │
│ ├── ⚙️ Settings/ # 设置管理
│ │ ├── Models/ # 账户与分类模型
│ │ │ ├── Account.swift
│ │ │ └── Category.swift
│ │ └── Views/ # 设置界面
│ │ ├── CategoryManagementView.swift
│ │ ├── AddCategoryView.swift
│ │ ├── EditCategoryView.swift
│ │ ├── ColorPickerView.swift
│ │ └── IconPickerView.swift
│ │
│ ├── 📊 Statistics/ # 数据统计
│ │ ├── Models/
│ │ │ └── StatisticsModels.swift
│ │ ├── Services/
│ │ │ └── StatisticsService.swift
│ │ └── Views/
│ │ ├── StatisticsView.swift
│ │ ├── StatisticsSummaryCard.swift
│ │ ├── CategoryStatisticsRow.swift
│ │ ├── PeriodSelectorView.swift
│ │ └── CategoryTransactionListView.swift
│ │
│ └── 🎯 Budget/ # 预算管理
│ └── Models/
│ └── Budget.swift
│
├── 🔧 Shared/ # 共享组件
│ ├── Components/ # 通用UI组件
│ ├── Extensions/ # 扩展方法
│ └── Utilities/ # 工具类
│
└── 🎨 Resources/ # 资源文件
└── Assets.xcassets/ # 图片与颜色资源
// 支持完整的CRUD操作
Transaction(
amount: 99.99,
type: .expense,
date: Date(),
note: "午餐",
merchant: "星巴克",
category: 餐饮分类,
account: 支付宝账户
)特性:
- 自动时间戳记录
- 分类与账户关联
- 格式化金额显示(¥ 符号)
- 收入/支出类型区分
// 多时间维度统计
- 日统计:当日收支概览
- 周统计:本周收支趋势
- 月统计:月度财务分析
- 年统计:年度财务报表功能:
- 分类支出占比分析
- 收支趋势可视化
- 交易明细深度钻取
- 实时数据刷新
- 🎨 16 种预设颜色
- 🖼️ 100+ SF Symbols 图标
- 🏷️ 收入/支出分类独立管理
- ✏️ 自由编辑与删除
// SwiftData 配置
ModelContainer(
for: Transaction.self,
Category.self,
Budget.self,
Account.self,
configurations: ModelConfiguration(
cloudKitDatabase: .none // 本地存储
)
)- 命名约定:大驼峰(类型)、小驼峰(属性/方法)
- 缩进风格:4 空格缩进
- 注释语言:中文注释,清晰明了
- 文件命名:视图以
View结尾,模型以实体名结尾
feat: 新增功能
fix: 修复缺陷
chore: 构建/工具链
docs: 文档更新
test: 测试相关示例:
git commit -m "feat: 新增分类统计饼图展示"
git commit -m "fix: 修复统计区间金额计算错误"# 单元测试
Tests/UnitTests/*Tests.swift
# UI 测试
Tests/UITests/*UITests.swift
# 运行测试
xcodebuild test -scheme ExpenseTracker \
-destination 'platform=iOS Simulator,name=iPhone 15'测试要求:
- ✅ 新增功能必须包含单元测试
- ✅ UI 改动需要验证主要路径
- ✅ 提交前本地跑通所有测试
我们欢迎所有形式的贡献!
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: 添加某个很棒的功能') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
- 代码遵循项目规范
- 添加了必要的测试
- 更新了相关文档
- 所有测试通过
- 没有引入新的警告
- UI 改动附带截图
- 基础交易记录功能
- 分类与账户管理
- 多维度数据统计
- 自定义分类样式
- 预算管理基础框架
- 统计图表可视化增强
- 数据导出功能(CSV/Excel)
- 重复交易模板
- 多币种支持
- iCloud 云同步
- Widget 小组件
- 数据备份/恢复
- Face ID / Touch ID 保护
- 账单提醒功能
- 财务报表生成
本项目采用 MIT 许可证 - 详见 LICENSE 文件
xiaolei
- 💼 资深 iOS 开发工程师
- 📧 Email: your-email@example.com
- 🔗 GitHub: @yourusername
感谢以下技术和工具:
- SwiftUI - Apple 官方 UI 框架
- SwiftData - Apple 数据持久化框架
- SF Symbols - Apple 图标库