AgentHarness 课程

CodeBuddy IDE 开发 iOS 应用

3.7K字·10分钟·

引言

CodeBuddy IDE 不仅能做 Web 开发,还支持 Swift 开发——通过 XcodeBuildMCP 让 AI 能够创建、管理、构建和运行 Xcode 项目。

本章将通过开发一个完整的照片查看 App,带你了解 CodeBuddy IDE 的 iOS 开发能力。

核心价值:在 CodeBuddy IDE 中用自然语言开发 iOS 应用,无需频繁切换到 Xcode。


一、环境准备

1.1 系统要求

要求说明
操作系统macOS 13+
Xcode15.0+
CodeBuddy IDE最新版
XcodeBuildMCP自动安装

1.2 安装 XcodeBuildMCP

XcodeBuildMCP 是 CodeBuddy IDE 与 Xcode 之间的桥梁,让 AI 能够:

  • 创建 Xcode 项目
  • 管理项目文件
  • 构建和运行应用
  • 读取编译错误
  • 管理模拟器
# CodeBuddy IDE 会自动检测并安装
# 或手动安装:
npm install -g xcode-build-mcp

二、实战:照片查看 App

2.1 需求描述

在 CodeBuddy IDE 中输入:

帮我创建一个 iOS 照片查看 App,要求:
1. 显示用户手机照片
2. 支持按日期排序
3. 支持按相册筛选
4. 大图查看模式
5. 支持视频播放

2.2 AI 执行流程

✅ Step 1/6: 创建 Xcode 项目
   - 项目名:PhotoViewer
   - Bundle ID:com.example.PhotoViewer
   - 最低部署版本:iOS 17.0

✅ Step 2/6: 配置 Info.plist
   - 添加 NSPhotoLibraryUsageDescription
   - 添加 NSCameraUsageDescription

✅ Step 3/6: 创建数据模型
   - PhotoItem(id, image, date, album)
   - AlbumInfo(name, count, cover)

✅ Step 4/6: 实现照片访问
   - PhotoManager(PHPhotoLibrary 封装)
   - 权限请求流程

✅ Step 5/6: 实现 UI
   - PhotoGridView(网格展示)
   - PhotoDetailView(大图查看)
   - AlbumPickerView(相册选择)
   - VideoPlayerView(视频播放)

✅ Step 6/6: 构建并运行
   - 选择 iPhone 16 模拟器
   - 构建成功
   - 运行预览

三、关键代码示例

3.1 照片管理器

import Photos

class PhotoManager: ObservableObject {
    @Published var photos: [PhotoItem] = []
    @Published var albums: [AlbumInfo] = []

    func requestAccess() async {
        let status = await PHPhotoLibrary.requestAuthorization(for: .readWrite)
        if status == .authorized {
            await loadPhotos()
        }
    }

    func loadPhotos() async {
        let fetchOptions = PHFetchOptions()
        fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

        let results = PHAsset.fetchAssets(with: .image, options: fetchOptions)
        // ... 加载照片
    }
}

3.2 照片网格视图

struct PhotoGridView: View {
    @StateObject private var photoManager = PhotoManager()
    let columns = [GridItem(.adaptive(minimum: 100))]

    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 2) {
                ForEach(photoManager.photos) { photo in
                    NavigationLink(destination: PhotoDetailView(photo: photo)) {
                        Image(uiImage: photo.thumbnail)
                            .resizable()
                            .aspectRatio(contentMode: .fill)
                            .frame(minWidth: 0, maxWidth: .infinity)
                            .clipped()
                    }
                }
            }
        }
        .task { await photoManager.requestAccess() }
    }
}

四、SweetPad 断点调试

CodeBuddy IDE 通过 SweetPad 扩展支持断点调试,无需切换到 Xcode:

4.1 配置

// .vscode/launch.json
{
  "configurations": [
    {
      "type": "sweetpad",
      "request": "launch",
      "name": "Debug iOS App",
      "program": "${workspaceFolder}/build/Debug-iphonesimulator/PhotoViewer.app"
    }
  ]
}

4.2 调试流程

  1. 在代码中设置断点
  2. 按 F5 启动调试
  3. App 在模拟器中运行
  4. 命中断点时,CodeBuddy IDE 显示变量值
  5. 支持单步执行、条件断点

五、常见陷阱

陷阱 1:Xcode 版本不兼容

原因:XcodeBuildMCP 需要特定版本的 Xcode
解决:更新 Xcode 到最新版

陷阱 2:模拟器启动失败

原因:模拟器进程残留
解决:xcrun simctl shutdown all && xcrun simctl boot "iPhone 16"

陷阱 3:权限描述缺失

原因:Info.plist 缺少权限描述
解决:添加 NSPhotoLibraryUsageDescription

六、总结

问题答案
能做什么?在 CodeBuddy IDE 中开发 iOS 应用
核心工具?XcodeBuildMCP + SweetPad
调试方式?SweetPad 断点调试,无需切换 Xcode
适用场景?iOS App 原型开发、功能验证