从XCAsset目录中获取数据

时间:2015-10-26 16:43:43

标签: ios swift xcasset asset-catalog

据我所知,要从资产目录中获取图像,我可以使用UIImage(名为:“fileName”)来执行此操作。

但是,如果我从XCAsset目录中获取DATA,该怎么办?我无法弄清楚这一点。

我试过了,

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

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

更新

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

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

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

2 个答案:

答案 0 :(得分:50)

我将回答我自己的问题。

从iOS 9开始,资产目录不仅仅包含图像。它们允许数据集。要从资产目录中获取数据,必须使用NSDataAsset类。

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

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

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

NSDataAsset class reference

答案 1 :(得分:0)

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

  1. 新:【新数据集】创建数据集并重命名"搞笑"在Assets.xcassets文件夹中。好吧,gif文件被添加到Assets.xcassets文件夹中。 enter image description here

  2. 使用:

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