When I try update my model I just get a nil error here.
It creates the update task fine and the printed URL below is correct.
Code Block private static func saveUpdatedModel(_ updateContext: MLUpdateContext) { let updatedModel = updateContext.model let fileManager = FileManager.default do { // Create a directory for the updated model. try fileManager.createDirectory(at: tempUpdatedModelURL, withIntermediateDirectories: true, attributes: nil) // Save the updated model to temporary filename. try updatedModel.write(to: tempUpdatedModelURL) print("tempUpdatedModelURL - \(tempUpdatedModelURL)") // Replace any previously updated model with this one. _ = try fileManager.replaceItemAt(updatedModelURL, withItemAt: tempUpdatedModelURL) print("Updated model saved to:\n\t\(updatedModelURL)") } catch let error { print("Could not save updated model to the file system: \(error)") return } }
It creates the update task fine and the printed URL below is correct.
Code Block extension UpdatableDrawingClassifier { /// Creates an update model from a given model URL and training data. /// /// - Parameters: /// - url: The location of the model the Update Task will update. /// - trainingData: The training data the Update Task uses to update the model. /// - completionHandler: A closure the Update Task calls when it finishes updating the model. /// - Tag: CreateUpdateTask static func updateModel(at url: URL, with trainingData: MLBatchProvider, completionHandler: @escaping (MLUpdateContext) -> Void) { // Create an Update Task. guard let updateTask = try? MLUpdateTask(forModelAt: url, trainingData: trainingData, configuration: nil, completionHandler: completionHandler) else { print("Could't create an MLUpdateTask.") return } updateTask.resume() print("Updating Model - updateTask.resume()") print("URL - \(url)") } }