17

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

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

我试过了,

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

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

更新:

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

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

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

4

2 回答 2

68

我要回答我自己的问题。

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

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

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

在此示例中,我将 NSData 对象转换为 json。

NSDataAsset 类参考

于 2015-10-27T14:27:29.397 回答
-1

从 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-11-23T02:44:30.630 回答