Я начинаю с этого в AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
CoreDataManager.shared.managedContext = self.persistentContainer.viewContext
CoreDataManager.shared.model = self.persistentContainer.managedObjectModel
SessionManager.shared.getCountries(completion: {
SessionManager.shared.getStates(completion: {
CoreDataManager.shared.updateCountryStateRelationships()
CoreDataManager.shared.save()
})
})
return true
}
Тогда эти методы, наконец, заканчиваются здесь ...
struct CoreDataManager {
var countryCache = [String : NSManagedObjectID()
func addCountry(name: String) {
var country = insertEntity(with: "Country") as? Country
country?.name = name
...
...
countryCache[code] = country!.objectID
}
func addState(name: String) {
var state = insertEntity(with: "State") as? State
state?.name = name
...
...
}
func updateCountryStateRelationships() {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "State")
let states = getAllManagedObjects(fetchRequest: fetchRequest) as! [State]
for state in states {
if let countryID = countryCache[state.countryCode!],
let country = managedContext.object(with: countryID) as? Country {
state.country = country
country.addToStates(state)
}
}
}
Все страны выбраны, и каждая из них вставлена вконтекст.Идентификатор управляемого объекта каждой страны сохраняется в словаре кэша.Когда все страны добавлены, контекст сохраняется.
Все состояния выбираются, и каждое из них вставляется в контекст.Когда все штаты добавлены, контекст сохраняется.
Затем создаются отношения, в каждой стране может быть много штатов, а у штатов одна страна.
Страны и штаты сохраняют штраф,отношения выглядят так, как будто они созданы должным образом, но когда в конце вызывается функция сохранения, я получаю ошибку основных данных.
NSLocalizedDescription=The operation couldn’t be completed. (Cocoa error 1550.), NSValidationErrorKey=country, NSValidationErrorShouldAttemptRecoveryKey=true}
Что при исследовании, похоже, указывает на то, что у меня нетне удовлетворены ли отношения должным образом при сохранении?Что необязательное свойство данных ядра - ноль?Но когда я использую точки прерывания в отношениях, кажется, что все настроено нормально, и ничто не заканчивается ничем.
Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи.Очень ценится!