web-dev-qa-db-ja.com

XCAssetカタログからデータを取得する

アセットカタログから画像を取得するために、UIImage(named: "fileName")を使用して画像を取得できることを理解しています。

ただし、XCAssetカタログからDATAを取得している場合はどうなりますか?これはわかりません。

私が試してみました、

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

しかし、それはゼロです。 XCAssetsカタログからデータを取得する方法がわかりません。誰かが私を助けてくれる場合(グーグルで助けられなかった場合)、私は非常に感謝します!

更新:

アセットカタログからデータを取得しようとするのはなぜですか?アニメーションgifをアセットカタログにドラッグしました。そしてアセットカタログはそれをDATAと解釈します。これが、資産カタログからデータを取得しようとしている理由です。

更新:これは、Assets.xcassetsフォルダーのスクリーンショットです。

image 「_Loading」というファイルがあり、右側は「データセット」と見なされます。アセットカタログからデータセットを取得する方法がわかりません。

11
DerrickHo328

自分の質問に答えます。

IOS 9以降、アセットカタログでは画像だけではありません。データセットを許可します。アセットカタログからデータを取得するには、NSDataAssetクラスを使用する必要があります。

例:「CoolJSON」という名前のデータアセットがあるとします

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

この例では、NSDataオブジェクトをjsonに変換しました。

NSDataAssetクラス参照

58
DerrickHo328

Assets.xcassetsファイルからgif画像を読み込みます。これはjsonファイルをロードする場合も同じです。

  1. 新規:【新しいデータセット】データセットを作成し、Assets.xcassetsフォルダー内の「funny」の名前を変更します。はい、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カテゴリです。
0
Beyond Chao