Я собираюсь догадаться, что проблема заключается в том, что в документации не учитывается предупреждение большими буквами :
Объект NSBundleResourceRequest может использоваться только для одногоуспешный запрос ресурса.
Нельзя повторно использовать объект запроса ресурса пакета. У него есть только два задания: загружать ресурсы (один раз) и удерживать их на месте (сохраняя). После того как вы успешно загрузили ресурсы один раз, вы можете сделать с этим объектом запроса ресурсов пакета только две вещи (и вы можете сделать их оба):
Если хотитеЧтобы снова узнать, при том же запуске приложения, есть ли у вас эти ресурсы, вам нужно начать все сначала с нового запроса ресурсов пакета.
Однако я бы пошел дальше. Как я уже сказал в комментариях, вы, кажется, неправильно используете conditionallyBegin
. Нет необходимости спрашивать дважды во время одного и того же запуска приложения, есть ли у вас эти ресурсы, и нет необходимости вызывать conditionallyBegin
, чтобы узнать это, потому что когда вы говорите beginAccessing
,произойдет правильное: либо вы начнете использовать ресурсы (если они есть), либо загрузите их и начнете их использовать (если их не было). Единственная причина для использования conditionallyBegin
заключается в том, что ваша логика будет отличаться от той, если окажется, что некоторые ресурсы отсутствуют.