У меня есть два контроллера представления (vc1 и vc2). На vcTwo, когда я добавляю игру, я сохраняю элемент, используя основные данные. Элемент должен отображаться немедленно в vcOne из представления коллекции. Но представление коллекции не загружает данные сразу даже при collectionView.reloadData
. Я должен перезапустить приложение, чтобы увидеть последний добавленный элемент в представлении коллекции. Как я мог сделать это.
var game: GameMo?
var gamesMo: [GameMo]? = []
var fetchRequestController : NSFetchedResultsController<GameMo>!
extension ViewControllerOne: NSFetchedResultsControllerDelegate {
func fetechRequest (){
let fetchRequest = NSFetchRequest<GameMo>(entityName: "Game")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "win", ascending: true)]
if let appDelegate = (UIApplication.shared.delegate as? AppDelegate){
let context = appDelegate.persistentContainer.viewContext
// fetch result controller
fetchRequestController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
fetchRequestController.delegate = self
do{
try fetchRequestController.performFetch()
if let fetchedObjects = fetchRequestController.fetchedObjects {
gamesMo = fetchedObjects
print(fetchRequest)
}
}catch{
fatalError("Failed to fetch entities: \(error)")
}
}
}
ViewController One
class ViewControllerTwo: UIViewController {
var game: GameMo?
func saveToCoreData(){
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
game = GameMo(context: appDelegate.persistentContainer.viewContext)
game?.gameOutcome = gameOutcome.text
game?.goal = Int32(goal.text ?? "0") ?? 0
game?.rivalGoal = Int32(rivalGoal.text ?? "0") ?? 0
print("Saving data")
appDelegate.saveContext()
delegate?.reloadCollectionViewData()
}
}