You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode应用Playground中Core ML模型类无法生成的问题

解决Xcode Playground中CoreML模型无目标无法生成类的问题

手动生成CoreML模型类

  • 在普通Xcode项目中添加.mlmodel文件,勾选对应目标触发模型类生成
  • 定位生成的Swift类文件:
    前往Xcode项目的DerivedData文件夹,路径一般为~/Library/Developer/Xcode/DerivedData/[项目名]-[随机字符串]/Build/Intermediates.noindex/[项目名].build/Debug-iphonesimulator/[项目名].build/DerivedSources/CoreMLGeneratedSources,找到对应模型的.swift文件(如SqueezeNet.swift)
  • 将该Swift文件复制到Playground的Sources目录(Swift Playground App需通过文件导入功能添加到项目)
  • 在Playground中直接调用这个手动生成的类,无需依赖.mlmodel文件的目标关联

直接加载编译后的模型文件

如果不想手动生成类,可通过模型URL直接加载:

import CoreML

guard let modelURL = Bundle.main.url(forResource: "SqueezeNet", withExtension: "mlmodelc") else {
    fatalError("模型文件不存在")
}

do {
    let model = try SqueezeNet(contentsOf: modelURL)
    // 执行模型预测逻辑
} catch {
    fatalError("加载模型失败:\(error)")
}

注意:需将Xcode项目Products目录下编译好的.mlmodelc文件夹添加到Playground资源中,保证Bundle能读取到。

Swift Package Manager适配(满足WWDC提交要求)

因为提交仅接受.swiftpm文件,需确保资源和代码都纳入Package:

  • 在Package.swift中添加资源声明:
let package = Package(
    name: "YourProjectName",
    products: [
        .library(name: "YourLibrary", targets: ["YourTarget"]),
    ],
    targets: [
        .target(
            name: "YourTarget",
            resources: [.process("SqueezeNet.mlmodelc")]
        ),
        .testTarget(
            name: "YourTargetTests",
            dependencies: ["YourTarget"]
        ),
    ]
)
  • 将手动生成的模型类放在Package的Sources目录下,确保Playground能正常引用

内容的提问来源于stack exchange,提问作者Dhanush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:29:59