Заставьте приложение ждать инициализации NSCloudKitPersistentContainer - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть приложение, которое использует NSCloudKitPersistentContainer, и состояния некоторых элементов пользовательского интерфейса в представлении коллекции изменяются в зависимости от того, сохраняются ли данные или нет.

Есть ли возможность заставить приложение ждать, пока контейнер не будет инициализированы, так что данные могут быть выбраны, прежде чем показывать пользователю представление коллекции?

Я попытался написать функцию извлечения с обработчиком завершения и вызвать ее в viewDidLoad, чтобы View Controller не отображался пользователю до того, как у меня есть данные, что-то вроде этого:

Функция извлечения:

func fetchFavouriteRecipes(completionHandler: @escaping () -> Void) {
    do {
        savedFavourites = try backgroundContext.fetch(Recipe.fetchRequest())
        favouritesList = savedFavourites
    } catch let error {
        print("Fetching data was unsuccessful: \(error)")
    }
    completionHandler()
}

Вызов:

override func viewDidLoad() {
    super.viewDidLoad()
    // ...

    viewModel.fetchFavouriteRecipes() {
        self.collectionView.reloadData()
    }
}

Но когда я проверил с точками останова, но ничего не было получено.

...