【问题标题】:Get Data from XCAsset catalog从 XCAsset 目录中获取数据
【发布时间】:2016-01-25 20:50:59
【问题描述】:

我知道要从资产目录中获取图像,我可以使用 UIImage(named: "fileName") 来做到这一点。

但是,如果我从 XCAsset 目录中获取 DATA 怎么办?我想不通。

我试过了,

let url = NSBundle.mainBundle().URLForResource("fileName", withExtension: nil)
let data = NSData(contentsOfURL: url!)

但它是零。我不知道如何从 XCAssets 目录中获取数据。如果有人可以帮助我(谷歌搜索没有帮助),请告诉我,我将非常感激!

更新:

我为什么要尝试从资产目录中获取数据?我将动画 gif 拖到资产目录中。资产目录将其解释为 DATA。这就是我尝试从资产目录中获取数据的原因。

更新: 这是我的 Assets.xcassets 文件夹的屏幕截图。

它有一个名为“_Loading”的文件,在右边它被认为是一个“数据集”。 我不确定如何从 Assets 目录中获取数据集。

【问题讨论】:

  • 您无法从资产目录中获取数据。资产目录有图像,而不是数据。您发布的代码用于从资源包中读取文件,而不是资产。
  • 如何以及为什么将数据放入 XCAssets?
  • 您发布的代码有什么问题?一般来说,从资源包中读取文件是正确的。只要确保您指定正确的文件名和扩展名。请记住,案例很重要。
  • 如果“fileName”不在资产目录中,它可以工作。我将数据放入资产目录,因为这是一项新功能。我可以将数据拖到资产目录中,但将其拉出来是个谜。
  • 顺便说一句...我将动画 gif 拖到资产目录中。资产目录将其解释为 DATA。这就是我试图从资产目录中获取数据的原因。

标签: ios swift xcasset asset-catalog


【解决方案1】:

我将回答我自己的问题。

从 iOS 9 开始,资产目录不仅允许图像。它们允许数据集。为了从 Asset Catalog 中获取数据,您必须使用 NSDataAsset 类。

示例:假设您有一个名为“CoolJSON”的数据资产

if let asset = NSDataAsset(name: "CoolJSON") {
    let data = asset.data
    let d = try? NSJSONSerialization.JSONObjectWithData(data, options: [])
}

在这个例子中,我把一个 NSData 对象变成了一个 json。

NSDataAsset class reference

【讨论】:

  • 酷。我不知道。
  • 我需要做一个特殊的配置吗?因为当我检查数据资产时它返回 nil 因此我无法访问内容。
  • @Klinkert0728 无特殊配置。您要获取什么数据集?
  • 我在我的 .xcassets 中创建了一个 DataAsset "airports",它包含一个 json,但是当你调用方法 NSDataAsset(name: "airports") 它返回 nil
  • @Klinkert0728 它应该是 NSDataAsset(name: "jsonName")
【解决方案2】:

从 Assets.xcassets 文件加载 gif 图像。加载 json 文件也是如此。

  1. 新增:【新建数据集】创建一个数据集并在 Assets.xcassets 文件夹中重命名为“funny”。好的,gif 文件被添加到 Assets.xcassets 文件夹中。

  2. 使用:

    NSDataAsset *asset = [[NSDataAsset alloc] initWithName:@"funny"]; 
    self.gifImageView.image = [UIImage sd_animatedGIFWithData:asset.data];                                        
    
    • (UIImage *)sd_animatedGIFWithData:(NSData *)data:是一个UIImage+GIF类,用于在SDWebImage中加载gif图片。

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多