Я получаю следующий сбой в приложении Hockey

Thread 0 Crashed:
0   App                         0x000000010302e7f8 partial apply forwarder for closure #1 (__C.UIImage?, [Swift.AnyHashable : Any]?) -> () in static App.ImageLoader.image(from: __C.PHAsset, size: __C_Synthesized.CGSize, success: (__C.UIImage) -> ()) -> () (PhotoLibraryImageLoader.swift:28)
1   App                         0x000000010302d958 reabstraction thunk helper from @escaping @callee_guaranteed (@owned __C.UIImage?, @owned [Swift.AnyHashable : Any]?) -> () to @escaping @callee_unowned @convention(block) (@unowned __C.UIImage?, @unowned __C.NSDictionary?) -> () (PhotoLibraryImageLoader.swift:0)
2   Photos                               0x00000001917c89cc __84-[PHImageManager requestImageForAsset:targetSize:contentMode:options:resultHandler:]_block_invoke.1505 + 816

В PhotoLibraryImageLoader.swift

static func image(from assest:PHAsset,size:CGSize,success:@escaping (_ image:UIImage) -> Void) {
        let option = PHImageRequestOptions()
        option.isSynchronous = false
        option.deliveryMode = .highQualityFormat
        PHImageManager.default().requestImage(for: assest, targetSize: size, contentMode: .aspectFill, options: option) { (image, attributes) in
            success(image!) // Crash line  PhotoLibraryImageLoader.swift:28
        }
 }

Если есть проблема для необязательного (image!) журнала сбоев, он должен быть другим (что-то вроде неожиданно обнаруженного нуля ..)

Здесь что означает частичная подача заявки на закрытие

Кто-нибудь может помочь мне разобраться в этом?

1
Prashant Tukadiya 18 Сен 2018 в 07:56

2 ответа

Лучший ответ

Изображение, которое недоступно, вызывает сбой (их необходимо загрузить с сервера)

Для этого добавьте одну строку в опцию

    option.isNetworkAccessAllowed = true

Надеюсь, это кому-нибудь пригодится

1
Prashant Tukadiya 20 Дек 2018 в 09:30

Я считаю, что авария произошла из-за сильного упоминания. Вызываете ли вы какой-либо выпущенный объект в блоке завершения?

При необходимости используйте следующую проверку в обработчике завершения.

if let wSelf = self {
    println("i have image now")
    // do what you want with the image/self
}
0
Adarsh V C 18 Сен 2018 в 05:11