【问题标题】:How to detect where the on demand resources are located after being downloaded?如何检测点播资源下载后的位置?
【发布时间】:2015-11-20 10:40:54
【问题描述】:

我通过从以下两个答案中获取参考来在我的项目中实现应用细化:-

  1. https://stackoverflow.com/a/33145955/988169
  2. https://stackoverflow.com/a/31688592/988169

on demand resources下载后如何检测到哪里?

【问题讨论】:

标签: ios ios9 xcode7 on-demand-resources


【解决方案1】:

除非你在初始化资源请求时指定了一个bundle,否则资源默认放在主bundle中。例如,如果适合您的资源类型,您可以通过这种方式访问​​它们:

NSString *path= [[NSBundle mainBundle] pathForResource:@"movie" ofType:@"mp4"  ];

【讨论】:

  • 这对我不起作用。我在项目的资源文件夹中有一个文件(不在资产中)。如果没有按需标签,我可以使用 pathForResource 方法获取它。一旦我向其添加按需标签 - 此方法不起作用((
  • 您可以尝试使用组而不是文件夹。这就是我最终这样做的方式,并且上述配置适用于该配置。
  • 他特别说这是一个on demand资源——根据定义,它需要一个标签,将它放在与main不同的包中。
  • @Hashman 这正是我所说的,一个标记的 ODR 资源,上次我与 ODR 搏斗,如果你不告诉它一个不同的包名称,它会放在主包中
  • @Yogi 不,我只是在寻找适用于 iOS 的 AWS S3 和集成的 AWS 开发工具包,在过去的 2.5 年里,它就像一个魅力
【解决方案2】:

终于找到了,如何获取按需资源位置的路径:

func preloadResourcesWithTag(tagArray: Array<Any>, resourceName: String ){

    let tags = NSSet(array: tagArray)
    let resourceRequest:NSBundleResourceRequest = NSBundleResourceRequest(tags: tags as! Set)
    resourceRequest.beginAccessingResources { (error) in
        OperationQueue.main.addOperation{
            guard error == nil else {
                print(error!);
                return
            }

                print("Preloading On-Demand Resources ")

            let _path1 = resourceRequest.bundle.path(forResource: "img2", ofType: "jpg")
            let img = UIImage(contentsOfFile: _path1!)}

所以,点播资源的真正位置在这里:

/Users/admin/Library/Developer/CoreSimulator/Devices/250101ED-DFC5-424C-8EE1-FC5AD69C3067/data/Library/OnDemandResources/AssetPacks/com.ae.OfflineMapSwiftV1/1629348341761109610/com.##.OfflineMapSwiftV1.asset -pack-000000G31NNOJ.assetpack/img2.jpg

【讨论】:

    【解决方案3】:

    要扩展 saswanb 的答案,您使用的 pathForResource 必须与您添加到 ODR 标记的文件夹或文件名相匹配。如果将文件夹的引用添加到 ODR,则可以搜索该文件夹名称,但不能搜索该文件夹的内容。

    NSString *path= [[NSBundle mainBundle] pathForResource:@"ODRFolder1" ofType:nil  ];
    

    但如果将文件夹的内容添加到 ODR 标签中,则可以单独搜索每个文件。

    【讨论】:

    • 如果您想扩展某人的答案,您应该编辑他们的答案,而不是创建自己的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多