从 XCAsset 目录获取数据

Get Data from XCAsset catalog

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

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

我试过了,

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

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

更新:

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

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

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

我要回答我自己的问题。

自 iOS9 起,资产目录不仅允许图像。他们允许数据集。为了从资产目录中获取数据,您必须使用 NSDataAsset class.

示例:假设您有一个名为 "CoolJSON"

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

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

NSDataAsset class reference

从 Assets.xcassets 文件加载 gif 图像。这与加载 json 个文件相同。

  1. NEW:【新数据集】创建一个数据集并在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图片。