如何通过NSBundleResourceRequest下载后访问资产目录(图像)?

时间:2017-08-30 17:00:39

标签: on-demand-resources

在通过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"](标记为'使用中')会返回正确的对象,但不会返回标记为'下载'

Disk Report

感谢您的时间和帮助!

谢谢, 火星

3 个答案:

答案 0 :(得分:1)

确保NSBundleResourceRequest没有被提前发布。尝试让NSBundleResourceRequest全局变量, 并使用UIImage(named: "xxx", in: self.bundleReq.bundle, compatibleWith: nil)

访问图像

答案 1 :(得分:0)

这样做

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

答案 2 :(得分:0)

int[]