Прежде всего, я хочу сказать, что я не нашел никаких комментариев об этом на этом сайте.Предотвращение загрузки изображений после возврата или прекращения действия приложения
Я хочу, чтобы сохранить NSURL
в NSUserDefaults
, чтобы предотвратить загрузку изображения на каждое приложение, открытое или открытое. Я пытался добиться этого так, но по какой-то причине я не могу. По крайней мере, я думаю, что это должно сделать это:
let productImageref = productsValue[indexPath.row]["Products"] as? String
cell.snusProductImageView.image = nil
if let url = self.productsValue[indexPath.row]["imageUrl"] as? NSURL {
cell.snusProductImageView.kf_showIndicatorWhenLoading = true
var storedUrl = defaults.objectForKey("imageUrl") as? NSURL
cell.snusProductImageView.kf_setImageWithURL(storedUrl)
}
else {
FIRStorage.storage().reference().child("\(productImageref!).png").downloadURLWithCompletion({(url, error)in
if error != nil{
print(error)
return
}else{
self.productsValue[indexPath.row]["imageUrl"] = url
self.defaults.setURL(url, forKey: "imageUrl")
self.productstable.reloadData()
dispatch_async(dispatch_get_main_queue(), {
})
}
})
}
Если я ошибаюсь, пожалуйста, исправьте меня. Должно ли сохранение url-s в userdefaults
сделать трюк?
Что именно я здесь делаю неправильно? Может быть, лучше сохранить его в CoreData
, но я подумал, что это будет излишним.
Почему Kingfisher или SDWebImages библиотека не кэшировать его?
Я настоятельно рекомендую взглянуть на http://stackoverflow.com/questions/38943645/uploading-downloading-multiple-images-the-right-way и использовать его в сочетании с инструментом, например SDWebImage или PINRemoteImage. Есть лучшие решения, чем CoreData и NSUserDefaults для этого приложения :) –
Ooh .. наконец-то, что не является нисходящим. Итак, согласно тому, что вы сказали, я понимаю, что URL-адрес загрузки никогда не меняется? Так что мне не нужно хранить их в массиве и в userdefaults? –
Нет, оба типа URL ('gs: //' и 'https: //') являются стабильными. Вы захотите использовать общедоступный 'https: //' один для загрузки сторонних изображений или для кеширования. База данных Realtime также имеет автономную стойкость, поэтому вам не нужно получать URL-адрес при холодном запуске :) –