【问题标题】:How to add uncompiled .mlmodel to Xcode UnitTests bundle如何将未编译的 .mlmodel 添加到 Xcode UnitTests 包
【发布时间】:2021-01-25 14:47:03
【问题描述】:

我需要将 .mlmodel 文件添加到我的单元测试中,以便检查我的框架中的编程模型编译。但是,从版本 12 开始,Xcode 会自动编译添加到项目中的任何 .mlmodel 文件,并将其替换为 .mlmodelc ,这在此上下文中是不需要的。

所以,如果我在项目中添加TestModel.mlmodel,我将无法获取资源 URL:

NSBundle *bundle = [NSBundle bundleForClass:ModelTest.class];

// modelURL is nil
NSURL *modelURL = [bundle URLForResource:@"TestModel" 
                           withExtension:@"mlmodel"];

如果我打开已编译的捆绑包,我可以在那里看到TestModel.mlmodelc

如何在 Xcode 中禁用自动 CoreML 模型编译?

【问题讨论】:

    标签: objective-c xcode coreml mlmodel


    【解决方案1】:

    项目导航器中选择项目后,所有已编译的文件都可以在构建阶段选项卡的编译源部分中找到。你能找到那里的文件吗?如果是,您可以将其删除。

    当在 Project navigator 中选择文件时,您可以在 File InspectorTarget Membership 部分执行相同操作:如果目标名称旁边的框已选中,取消选中它。

    最后,如果您希望将此文件添加到应用程序的资源中,您可能必须将其添加到 Build Phase 选项卡的 Copy Bundle Resource 部分(或者您可以创建一个特定的为它复制文件阶段)

    【讨论】:

    • 这不起作用。如果我从 Compile Sources 中删除 TestModel.mlmodel 并将其添加到 Copy Bundle Resources 它最终会被编译为 .mlmodelc,无论如何。
    • Xcode 似乎将该文件识别为可编译资源(就像它对 XIB 所做的那样)。您应该尝试从 Copy Bundle Resources 中删除该文件,并将其添加到新的 Copy Phase 部分(将 Resources 用作目标)。如果它不起作用,您也可以使用一个小的 bash 脚本“手动”复制它。目标是防止 Xcode 处理该文件。
    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 2018-06-09
    • 2014-06-18
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多