2016-10-22 5 views
1

Я делаю приложение в swift 2.3 с Realm database и Kingfisher framework для получения изображений. я получить изображения с сервера на JSONКак писать изображения как NSData в Царство от 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() 

Это успешна, но изображения в Realm database является NSData, как писать полученные данные от Kingfisher до Realm как NSData

класса Realm:

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

Привет! Я не могу писать мои изображения в моей базе данных я сделать:

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 

ответ

1

Использование optionsInfo: [.TargetCache(myCache)] для настройки кэша URL, где вы можете получить данные (как описано here), или использовать exampleretrieveImage для получения UIImage, которые могут быть преобразован в NSData, как here.

+0

Привет! Я не могу написать свои изображения в мою базу данных, я делаю: let urls = NSURL (fileURLWithPath: newsRealm.newsImage) let prefetcher = ImagePrefetcher (urls: [urls], optionsInfo: nil, progressBlock: nil, completionHandler: { (skippedResources, failedResources, completedResources) ->() в print ("Эти ресурсы предварительно выбраны: \ (завершеноResources.description)") let images: [NSData] = finishedResources newsRealm.images = images – Zhanserik

+0

@Zhan, я не читал, что Я написал – Vyacheslav

+0

Я обновляю вопрос. – Zhanserik

0

completedResources не является массивом NSData. completedResources - массив из Resource. Resource проводит cacheKey и downloadURL. Вы должны извлечь изображение из cacheKey из кеша, а затем преобразовать изображение в NSData. Затем сохраните данные в Realm.

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

 Смежные вопросы

  • Нет связанных вопросов^_^