Xcode 12 更新后快速运行 MLModel 的新错误

Posted

技术标签:

【中文标题】Xcode 12 更新后快速运行 MLModel 的新错误【英文标题】:New error running MLModels in swift after Xcode 12 update 【发布时间】:2021-01-06 11:02:51 【问题描述】:

升级到 Xcode 12 和 Swift 5.3 后,我的 MLmodel 似乎不再正常工作,我之前没有遇到任何问题。我确定这是一个简单的修复,我只是不明白如何修复。

let WpredictionModel = _14Win()

 func calculateWin() 
    guard let prediction = try? WpredictionModel.prediction(//all of my input data) else 
        fatalError("Unexpected runtime error.")
    

我收到了错误 'init()' 已弃用:改用 init(configuration:) 并适当地处理错误。 在 WpredictionModel 声明之后。

我也认为这是一个错误。

 @available(macOS 11.0, ios 14.0, tvOS 14.0, watchOS 7.0, *)
    class func load(contentsOf modelURL: URL, configuration: MLModelConfiguration = MLModelConfiguration(), completionHandler handler: @escaping (Swift.Result<_14Win, Error>) -> Void) 
        MLModel.__loadContents(of: modelURL, configuration: configuration)  (model, error) in
            if let error = error 
                handler(.failure(error))
             else if let model = model 
                handler(.success(_14Win(model: model)))
             else 
                fatalError("SPI failure: -[MLModel loadContentsOfURL:configuration::completionHandler:] vends nil for both model and error.")
            
        
    

【问题讨论】:

【参考方案1】:

克里斯。 我昨天更新Xcode12后也遇到了同样的问题!

Xcode 会自动从我的 mlmodel 文件中生成以下代码。 但是“MLModel”没有“loadContentsOfURL ...”。 自动生成的文件不可编辑,我无能为力...

    + (void)loadContentsOfURL:(NSURL *)modelURL configuration:(MLModelConfiguration *)configuration completionHandler:(void (^)(AIASCore * _Nullable model, NSError * _Nullable error))handler 
    [MLModel loadContentsOfURL:modelURL
                 configuration:configuration
             completionHandler:^(MLModel *model, NSError *error) 
        if (model != nil) 
            AIASCore *typedModel = [[AIASCore alloc] initWithMLModel:model];
            handler(typedModel, nil);
         else 
            handler(nil, error);
        
    ];

【讨论】:

同样的问题。

以上是关于Xcode 12 更新后快速运行 MLModel 的新错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将未编译的 .mlmodel 添加到 Xcode UnitTests 包

在 Xcode 中使用 MLModel 时如何重写更少的代码

Playground 导入 - 更新到 Xcode 12 后没有这样的模块

在 CreateML 中重新导入 mlmodel

ruby 快速修复所有Xcode SDK问题。当您更新Xcode时,只需运行此脚本即可。

在 Flutter 2 和 XCode 12.5 更新后发生的 Flutter unknown iOS 构建中的错误