首页 > 解决方案 > 执行获取时未调用 FetchedResultController 中的方法

问题描述

我想知道如何grabDataFromEntity(gamesObject: fetchedObjects)在执行提取后调用 fetchresult 控制器中的方法。即使我将方法放在外部并紧跟在 fetch 控制器之后。是和核心数据并发还是多线程有关。

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)
    }
}

标签: iosswiftcore-data

解决方案


推荐阅读