MapleBacon.DiskStorage больше не предоставляет доступ к изображениям после обновления 3.0.0: почему?

#ios #swift #uiimage #storage

#iOS #swift #uiimage #Хранение

Вопрос:

Следуя документации на https://github.com/zalando/MapleBacon Я создал следующее, которое работало в Swift 2.3:

 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()
}
  

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

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

Спасибо [по крайней мере, за чтение].

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

Ответ №1:

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