2017-08-30 198 views
0

在通过NSBundleResourceRequest(按需资源)下载资产目录后,我无法访问资产目录中的图像。如何通过NSBundleResourceRequest下载后访问资源目录(图片)?

我的代码,形象地说集名称是“snow_4”点播资源标签“标签1”

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

欣赏你的时间和帮助!

谢谢, 火星

+0

检查我的答案[这里] [1] [1]:https://stackoverflow.com/a/48327239/6534130 –

回答

0

为此

图像= [UIImage的imageNamaed:@ “snow_4” inBundle:[resourceRequest捆绑]];

+0

文斯你好,谢谢你的回复。我试过了,但它不起作用。资源仍被标记为“已下载”且无法访问。 –

0
let tags = NSSet(array: ["tag1","tag2"]) 
let resourceRequest = NSBundleResourceRequest(tags: tags as! Set<String>) 
resourceRequest.conditionallyBeginAccessingResourcesWithCompletionHandler {(resourcesAvailable: Bool) -> Void in 
    if resourcesAvailable { 
     // Do something with the resources 
    } else { 
     resourceRequest.beginAccessingResourcesWithCompletionHandler {(err: NSError?) -> Void in 
      if let error = err { 
       print("Error: \(error)") 
      } else { 
       // Do something with the resources 
      } 
     } 
    } 
}