2015-10-26 11 views
7

Ich verstehe, dass ich Bilder verwenden kann, um Bilder aus dem Asset-Katalog zu erhalten, UIImage (mit dem Namen: "fileName") zu tun.Daten von XCAsset-Katalog erhalten

jedoch, was passiert, wenn ich Daten aus dem XCAsset-Katalog bekomme? Ich kann das nicht herausfinden.

ich versucht habe, ist

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

Aber es gleich Null. Ich weiß nicht, wie man Daten aus dem XCassets-Katalog bekommt. Wenn mir jemand helfen kann (Googeln hat nicht geholfen), lass es mich wissen, ich werde sehr dankbar sein!

Update:

Warum versuche ich Daten aus einem Asset-Katalog zu erhalten? Ich habe ein animiertes Gif in den Asset-Katalog gezogen. Und der Asset-Katalog interpretiert das als DATA. Aus diesem Grund versuche ich, Daten aus dem Asset-Katalog herauszuholen.

Update: Dies ist ein Screenshot meiner Assets.xcassets Ordner sieht aus wie.

image Es hat eine Datei namens "_Loading" und auf der rechten Seite wird es als "Data Set" betrachtet. Ich bin mir nicht sicher, wie Sie den Datensatz aus dem Katalog Assets erhalten.

+0

Sie erhalten keine Daten von einem Asset-Katalog. Asset-Kataloge haben Bilder, keine Daten. Der von Ihnen gepostete Code dient zum Lesen einer Datei aus dem Ressourcenpaket, nicht als Asset. – rmaddy

+0

Wie und warum setzen Sie Daten in XCAssets ein? – zaph

+0

Welches Problem haben Sie mit dem von Ihnen geposteten Code? Im Allgemeinen ist es richtig, eine Datei aus dem Ressourcenpaket zu lesen. Stellen Sie nur sicher, dass Sie den richtigen Dateinamen und die korrekte Erweiterung angeben. Und denk daran, dass dieser Fall zählt. – rmaddy

Antwort

38

Ich werde meine eigene Frage beantworten.

Seit iOS 9 ermöglicht der Asset Catalog mehr als nur Bilder. Sie erlauben Datensätze. Um Daten aus dem Asset-Katalog abzurufen, müssen Sie die NSDataAsset-Klasse verwenden.

Beispiel: Angenommen, Sie eine Daten Asset-Namen "CoolJSON"

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

In diesem Beispiel habe ich ein NSData Objekt in ein Json gedreht.

NSDataAsset class reference

+0

Kühl. Ich wusste nichts davon. –

+1

gibt es eine spezielle Konfiguration, die ich tun muss ?, weil, wenn ich nach dem Datenbestandteil überprüfe, es Null zurück gibt, deshalb kann ich nicht auf den Inhalt zurückgreifen. – Klinkert0728

+0

@ Klinkert0728 keine spezielle Konfiguration. Welchen Datensatz möchten Sie erhalten? – DerrickHo328

0

laden GIF-Bild aus Assets.xcassets Datei. Das gleiche gilt für das Laden von JSON-Dateien.

  1. NEU: 【Neuer Datensatz】 Kiste einen Datensatz und umbenennen "lustig" in Assets.xcassets Ordner. OK, die gif-Datei wird dem Ordner Assets.xcassets hinzugefügt. enter image description here

  2. ANWENDUNG:

    NSDataAsset *asset = [[NSDataAsset alloc] initWithName:@"funny"]; 
    self.gifImageView.image = [UIImage sd_animatedGIFWithData:asset.data];           
    
    • (UIImage *) sd_animatedGIFWithData: (NSData *) Daten: eine UIImage + GIF Kategorie für das Laden GIF-Bild in SDWebImage.