2016-10-21 1 views
0

После документации на https://github.com/zalando/MapleBacon, я создал следующий, который работал в Swift 2.3:MapleBacon.DiskStorage больше не предоставляет доступ к изображениям после обновления 3.0.0: почему?

import MapleBacon 

fileprivate let 
_manager: ImageManager 
, _storage: DiskStorage 
, _stopwatch: Stopwatch 
, _urlsLoading: [ String ] 

required init() 
{ 
    _manager = ImageManager.sharedManager 
    _storage = DiskStorage(name: "MyStorageName") 
    _stopwatch = Stopwatch() 
    _urlsLoading = [] 
} 

func loadImageBy (Url url: String) 
{ 
    guard let nsurl = URL(string: url) else { return } 

    _urlsLoading.append(url) 

    _manager.downloadImage(
     atUrl: nsurl 
     , cacheScaled: true 
     , imageView: nil 
     , storage: _storage 
     , completion: 
     { 
      [ unowned self ] (image, error) -> Void in 
      self._stopwatch.startWith( 
       Delay: 0.02 
       , ForListener: self._onStopwatchComplete 
      ) 
     } 
    ) 
} 

Я обнаружил, что, используя свой собственный Stopwatch компонент, чтобы заставить задержку 0,02 включен MapleBacon.DiskStorage, чтобы изображения доступны через его image(forKey:) метод:

fileprivate lazy var _onStopwatchComplete: (String, Any?) -> Void = 
{ 
    [ unowned self ] (key: String, data: Any?) -> Void in 

    var url: String, imageCount = 0 

    // loop through urls of images being loaded 
    for _ in 0..<self._urlsLoading.count 
    { 
     url = self._urlsLoading[ imageCount ] 

     // image found 
     if let img = self._storage.image(forKey: url) 
     { 
      print(img) 
      // remove from list of urls of images being loaded and... 
      self._urlsLoading.remove(at: imageCount) 
     } 

     // image not found: continue waiting 
     else 
     { 
      imageCount += 1 
     } 
    } 

    self._stopwatch.stop() 
} 

с Swift версии 3.0 MapleBacon хотя, даже задержка 5 секунд, не производя ссылку на изображение в _storage, и так же, как Swift 2.3 версии, самку s не имеет его в completion: (image, error) ->.

С 3.0.0 версии MapleBacon, что нужно сделать, чтобы успешно сохранить и получить изображения с DiskManager, пожалуйста?

спасибо [для чтения, по крайней мере].

PS: У меня нет нужного показателя для создания тега MapleBacon. Если кто-то сделает и может, это было бы здорово, спасибо.

ответ

0

Jan Gorman, являющийся автором MapleBacon, идентифицировал это как неподдельную ошибку в MapleBacon 3.0.0 и загрузил исправление для него (здесь вы можете прочитать здесь: https://github.com/zalando/MapleBacon/issues/38). Код, который работал в Swift 2.3, теперь также работает в Swift 3.0.

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

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