Как получить доступ к каталогу активов (изображениям) после загрузки через NSBundleResourceRequest?

Я не могу получить доступ к изображениям в каталоге активов после того, как они были загружены через NSBundleResourceRequest (ресурс по требованию).

Мой код, скажем, имя набора изображений "snow_4" с тегом ресурса по запросу "tag1"

NSBundleResourceRequest* resourceRequest = [[NSBundleResourceRequest alloc] initWithTags:[NSSet setWithObjects:@"tag1", nil]];

[resourceRequest conditionallyBeginAccessingResourcesWithCompletionHandler:
 ^(BOOL resourcesAvailable){
     // if resource is not available download it
     if (!resourcesAvailable) {
         [resourceRequest beginAccessingResourcesWithCompletionHandler:
          ^(NSError * __nullable error){
              if(!error){                      
                  UIImage* image = [UIImage imageNamed:@"snow_4"]; // image is null
              }
          }];
     }else{             
         UIImage* image = [UIImage imageNamed:@"snow_4"]; // image is null
     }
 }];

Ниже приведен мой отчет о диске. Обратите внимание, что [UIImage imageNamed:@"snow_3"] (помеченный как «Используется») возвращает правильный объект, но не изображения, помеченные как «Загруженные».

Отчет о диске

Ценим ваше время и помощь!

Спасибо, Марс


person Mars Zhu    schedule 30.08.2017    source источник
comment
Проверьте мой ответ [здесь][1] [1]: stackoverflow.com/a/48327239/6534130   -  person Anton Eregin    schedule 06.02.2018
comment
вы когда-нибудь находили ответ на это?   -  person Hashman    schedule 15.10.2019


Ответы (2)


Убедитесь, что NSBundleResourceRequest не выпущен раньше времени. Попробуйте разрешить глобальную переменную NSBundleResourceRequest и получить доступ к изображению с помощью UIImage(named: "xxx", in: self.bundleReq.bundle, compatibleWith: nil)

person D.Ter    schedule 31.03.2020

сделай это

image = [UIImage imageNameed:@"snow_4" inBundle:[resourceRequest bundle]];

person vince    schedule 31.08.2017
comment
Привет Винс, спасибо за ваш ответ. Я пробовал это, но это не работает. Ресурсы по-прежнему помечены как «Загруженные» и недоступны. - person Mars Zhu; 03.09.2017