Мне интересно, как я могу сделать так, чтобы метод grabDataFromEntity(gamesObject: fetchedObjects)
внутри контроллера fetchresult вызывался после выполнения выборки. Даже когда я помещаю метод снаружи и сразу после контроллера выборки. Связано ли это с параллелизмом основных данных или многопоточностью.
class ViewController: UIViewController, NSFetchedResultsControllerDelegate {
var game : Game?
var gamesMo: [GameModel]? = []
lazy var context : NSManagedObjectContext = {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
return appDelegate.persistentContainer.viewContext
}()
lazy var fetchRequestController : NSFetchedResultsController<GameModel> = {
let fetchRequest = NSFetchRequest<GameModel>(entityName: "Game")
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
// fetch result controller
let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
frc.delegate = self
do {
try frc.performFetch()
if let fetchedObjects = frc.fetchedObjects {
self.gamesMo = fetchedObjects
grabDataFromEntity(fromContext: fetchedObjects)
}
} catch{
fatalError("Failed to fetch entities: \(error)")
}
return frc
}()
func grabDataFromEntity(fromContext gamesObject: [GameModel]){
guard let game = game else { return }
for gameFromModel in gamesObject {
game.corners = Int(gameFromModel.corners)
game.fouls = Int(gameFromModel.fouls)
game.gameOutcome = gameFromModel.gameOutcome
game.goal = Int(gameFromModel.goal)
}
gamesArray?.append(game)
}
}