У меня очень похожий вопрос к: Swift: Хранить массивы пользовательских классов в Core Data
Разница в том, что этот вопрос пытался добавить в массив пользовательских классов в Core Data один элемент за один раз. Я ищу, чтобы добавить весь массив сразу. Когда я пытаюсь это сделать, я получаю следующую ошибку: [CDTester.MassOfSubpart entity]: нераспознанный селектор отправлен в экземпляр.
Я сделал простое приложение, чтобы продемонстрировать ошибку и, надеюсь, выяснить, где я иду не так. Я загрузил его на GitHub здесь: https://github.com/Yrban/Core-Data-Test-App
Код, где происходит сбой, находится здесь:
func saveWidget(){
print("saveWidget() entered")
if self.massOfSubpartMeasurementDict.count > 0,
self.massOfSubpartMeasurementDict.count == self.numberOfSubparts,
self.manufacturer != "",
self.title != "" {
var massPerSubpartMeasurementArray: [MassOfSubpart]
massPerSubpartMeasurementArray = massOfSubpartMeasurementDict.map {
return MassOfSubpart(subpart: $0.key, mass: Measurement(value: Double($0.value)!, unit: self.massUnit))
}
let massOfSubpartSet = Set(massPerSubpartMeasurementArray)
let widget = Widget(context: self.managedObjectContext)
widget.id = UUID()
widget.madeBy?.name = self.manufacturer
widget.hasMassOfPart = massOfSubpartSet // FIXME: The crash is here
widget.title = self.title
do {
print("SaveWidget() attempted/n")
try self.managedObjectContext.save()
} catch {
print("SaveWidget() failed/n")
// handle the Core Data error
// Show alert as to status
}
}
}
Моя базовая модель данных:
MassOfSubpart - это пользовательский объект:
import SwiftUI
public class MassOfSubpart: NSObject, Codable {
var subPart: Int
var mass: Measurement<UnitMass>
override init() {
self.subPart = 1
self.mass = Measurement(value: 0.0, unit: UnitMass.grams)
}
init(subpart: Int, mass: Measurement<UnitMass>){
self.subPart = subpart
self.mass = mass
}
}
Я прочитал все, что смог найти, включая документацию Apple. Я чувствую, что я рядом, но я, очевидно, упускаю что-то важное. Любая помощь будет оценена.