Я получаю сообщение об ошибке ниже, когда я закрываю свое приложение и затем пытаюсь сохранить его в ядре при перезагрузке приложения.
ошибка: серьезная ошибка приложения. Исключение было обнаружено во время обработки изменений Core Data. Обычно это ошибка в наблюдателе NSManagedObjectContextObjectsDidChangeNotification. - [__NSSingleObjectArrayI сравнить:]: нераспознанный селектор, отправленный экземпляру 0x600002291510 с userInfo (null)
Когда я впервые запускаю приложение свежим после удаления его из симулятора, оно работает нормально, хотя после закрытия программы ипопробуйте добавить в ядро снова, я получаю ошибку выше.
Вот мой код:
import SwiftUI
import CoreData
struct ContentView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@State var objRating:[ObjectToRate]
@FetchRequest(entity: ObjectsForRate.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \ObjectsForRate.objectsClass, ascending: true)])
var classesRetrieved: FetchedResults<ObjectsForRate>
var body: some View {
VStack {
Text(self.objRating[0].name!)
Button(action: {
print("Mark 1")
let obj = ObjectsForRate(context: self.managedObjectContext)
obj.objectsClass = self.objRating
do
{
try self.managedObjectContext.save()
}
catch
{
print("ERROR \(error)")
}
}) {
Text("Insert to Core ")
}
Button(action: {
print("---------")
print(self.classesRetrieved.count)
print(self.classesRetrieved)
}) {
Text("Retrieve")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(objRating:data )
}
}
public class ObjectToRate:NSObject, NSCoding
{
public var name:String?
init(name:String) {
self.name = name
}
public func encode(with coder: NSCoder) {
coder.encode(name,forKey: "name")
}
public required init(coder decoder: NSCoder) {
self.name = decoder.decodeObject(forKey: "name") as? String
}
}
var obj: ObjectToRate = {
let o = ObjectToRate(name: "hi")
return o
}()
var data = [
obj
]
Я много чего перепробовал, но не уверен, что делаю неправильноили если это ошибка.
Вот моя модель Coredata:
Другое дело, когда я получаю данные из ядра, я получаю это:
<ObjectsForRate: 0x6000038fd400> (entity: ObjectsForRate; id: 0x8b8684e607da61d2 <x-coredata://0CDCAD97-CA46-402F-B638-3F0ACB6E30A7/ObjectsForRate/p5>; data: <fault>
Заранее благодарим за ваше время и помощь.