mcpField
C
coding-swift

coding-swift

github.com/alphaonedev开发43 次安装
代码仓库

关于 coding-swift

coding-swift 是面向 AI 系统的 Swift 6 开发技能,适用于 iOS 和 macOS 项目。内容涵盖并发、泛型、包管理与测试。

主要功能

  1. 01async/await 与 Actor 并发
  2. 02泛型与属性包装器
  3. 03Swift Package Manager 依赖管理
  4. 04使用 XCTest 测试异步代码

适用场景

  1. 01构建异步网络请求应用
  2. 02使用 Actor 安全管理共享状态
  3. 03更新代码以符合 Sendable
  4. 04编辑 SPM 依赖并运行测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill coding-swift

安装后在 Claude Code 中输入/coding-swift确认已加载。

详细介绍

用途

此技能使 AI 能够协助 Swift 6 编程,重点关注 iOS 和 macOS 开发的现代功能,包括并发、泛型和包管理。

适用场景

在涉及 Swift 6 代码的任务中使用此技能,例如构建基于 async/await 的应用、实现 actor 以确保线程安全,或管理 iOS/macOS 项目中的 Swift Package Manager(SPM)依赖项。当现有代码需要更新以符合 Sendable 要求或增强泛型功能时,也可使用此技能。

主要功能

  • Async/await:用于执行非阻塞代码,例如处理网络请求。
  • Actors:用于安全地管理共享状态,确保符合 Sendable 要求。
  • Generics:通过类型约束实现可复用代码,例如定义泛型结构体。
  • Property wrappers:简化属性管理,例如用于验证。
  • Result builders:构建 SwiftUI 视图等复杂类型。
  • SPM:通过 Package.swift 文件管理依赖项。
  • 测试:使用 XCTest 为异步代码编写单元测试。

使用模式

完成任务时,使用 Swift 6 惯用写法组织代码:对 I/O 操作使用异步函数,将共享状态封装在 actor 中,并利用泛型处理集合。使用 SPM 时,编辑 Package.swift 并运行构建。始终检查是否符合 Sendable 要求,以避免数据竞争。与 Xcode 集成时,在项目设置中设置编译器版本,使用 Swift 6 工具链编译项目。

常用命令/API

  • 构建 Swift 包:在项目目录中运行 swift build --configuration release。
  • 运行测试:在 SPM 项目中执行 swift test --enable-test-discovery。
  • Async API 用法:定义如下异步函数 func fetchData() async throws -> Data { ... },并使用 Task { let data = try await fetchData() } 调用它。
  • Actor 示例:使用 actor MyActor { var state: Int = 0; func update() { state += 1 } } 创建 actor。
  • Generics API:使用如下泛型函数 func swap<T>(_ a: inout T, _ b: inout T) { let temp = a; a = b; b = temp }。
  • Property wrapper:定义方式如下:@propertyWrapper struct Clamped<Value: Comparable> { var wrappedValue: Value { ... } }。
  • SPM 配置:按以下格式编辑 Package.swift:let package = Package(name: "MyApp", dependencies: [.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0")])。

集成说明

集成此技能时,请确保已安装 Swift 6 工具链(例如,通过 Xcode 15+)。对于外部服务,可通过环境变量(如 $SWIFT_API_KEY)设置身份验证,以便在代码中调用 API,例如:let apiKey = ProcessInfo.processInfo.environment["SWIFT_API_KEY"]。与其他技能结合使用时,可在 Xcode 的 "Swift Packages" 标签页中添加 Swift 包。对于并发,请确保在异步上下文中使用 actors,以避免运行时错误。

错误处理

在 Swift 6 中,使用 do-catch 块处理错误,并配合异步函数,例如:

do {
    let result = try await someAsyncFunction()
} catch let error as NSError {
    print("Error code: \(error.code)")
}

若出现 Sendable 错误,请为函数添加 @Sendable,并修复不符合要求的闭包。对于 SPM,请解析 swift build 输出中的构建错误,例如查找 "error: dependency not found",并通过更新 Package.swift 解决。始终使用 guard 语句处理可选值,以防止崩溃。

具体使用示例

  1. 异步网络请求:要从 API 获取数据,请使用:func fetchUser() async throws -> User { let url = URL(string: "https://api.example.com/user")!; let (data, _) = try await URLSession.shared.data(from: url); return try JSONDecoder().decode(User.self, from: data) }。在任务中调用它:Task { do { let user = try await fetchUser(); print(user.name) } catch { print(error) } }。
  2. 用于共享状态的 Actor:要安全地管理计数器,请定义:actor Counter { private var value = 0; func increment() { value += 1 } }。使用方式如下:let counter = Counter(); Task { await counter.increment(); print(await counter.value) },以确保线程安全。

图关系

  • 相关项:coding-general(共享集群)、ios-development(通过标签 "ios")、macos-app(通过标签 "macos")、concurrency-handling(通过嵌入提示 "concurrency actor async")。
  • 集群:与 "coding" 集群相连,涵盖更广泛的编程技能。
  • 标签:与标记为 "swift" 的技能相关联,适用于特定语言的任务;与标记为 "spm" 的技能相关联,适用于包管理。

评论

支持 Markdown