2016-10-22 2 views
1

Ich mache App in swift 2.3 mit Realm database und Kingfisher framework, um Bilder zu bekommen. ich Bilder vom Server erhalten, indem JSONWie schreibe ich Bilder als NSData in Realm von Kingfisher?

let urls = NSURL(fileURLWithPath: newsRealm.newsImage) 
let prefetcher = ImagePrefetcher(urls: [urls], optionsInfo: nil, progressBlock: nil, completionHandler: { 
(skippedResources, failedResources, completedResources) ->() in 
print("These resources are prefetched: \(completedResources)") 
}) 
prefetcher.start() 

‚Es ist erfolgreich, aber Bilder in Realm database ist NSData, wie von Kingfisher zu Realm als NSData

Realm Klasse empfangenen Daten zu schreiben:

class News: Object { 
    dynamic var newsImage: String = "" 
    dynamic var images: NSData? 
} 

Hallo! Ich kann meine Bilder zu meiner Datenbank schreibe ich tun:

let urls = NSURL(fileURLWithPath: newsRealm.newsImage) 
let prefetcher = ImagePrefetcher(urls: [urls], optionsInfo: nil, progressBlock: nil, completionHandler: 
{(skippedResources, failedResources, completedResources) ->() in 
print("These resources are prefetched: (completedResources.description)") 
let images: [NSData] = completedResources 
newsRealm.images = images 

Antwort

1

Verwenden optionsInfo: [.TargetCache(myCache)] Setup Cache-URL, wo Sie die Daten abrufen können (wie here beschrieben), oder verwenden Sie eine exampleretrieveImage UIImage abzurufen, die sein kann, konvertiert zu NSData wie here.

+0

Hallo! Ich kann meine Bilder nicht in meine Datenbank schreiben, ich mache: let urls = NSURL (DateiURLWithPath: newsRealm.newsImage) Lassen Sie Prefetcher = ImagePrefetcher (URLs: [URLs], OptionsInfo: Nil, FortschrittBlock: Nil, CompletionHandler: { (skippedResources, failedResources, completedResources) ->() in print ("Diese Ressourcen sind prefetched: \ (completedResources.description)") Lassen Sie Bilder: [NSData] = AbgeschlosseneRessourcen newsRealm.images = Bilder – Zhanserik

+0

@Zhan, ich habe nicht was gelesen Ich schrieb – Vyacheslav

+0

Ich aktualisiere Frage. – Zhanserik

0

completedResources ist kein Array von NSData. completedResources ist ein Array von Resource. Resource hält cacheKey und downloadURL. Sie sollten das Image mit cacheKey aus dem Cache abrufen und dann das Image in NSData konvertieren. Speichern Sie die Daten anschließend in Realm.

let images: [NSData] = completedResources.map { (resource) -> NSData in 
    let image = ImageCache.default.retrieveImageInDiskCache(forKey: resource.cacheKey)! 
    return UIImagePNGRepresentation(image) 
} 
Verwandte Themen