Я создаю базовый c редактор изображений, который берет изображение и применяет базовые c изменения метаданных. После внесения любых изменений я использую PHAssetChangeRequest
для отправки изменений в библиотеку фотографий.
Насколько я понимаю, при этом я не изменяю исходный носитель, а создаю новый PHAssetResource
.
Я могу подтвердить, что мои правки работают и новые PHAssetResources
добавляются в PHAsset
. Журналы см. Ниже.
Почему при запросе данных изображения для этого актива (после изменения) мне предоставляется исходный актив даже при запросе с options.version = .current
.
Закрытие приложение и его перезапуск, кажется, исправляют это поведение, и та же самая функция возвращает правильные, измененные данные изображения с этого момента. Таким образом, приложение полностью перезагружает все ресурсы из библиотеки фотографий. Но это не должно влиять на запрос фактических данных изображения из активов.
Есть ли способ принудительно установить свойство isCurrent
ресурсов ресурса или есть что-то, чего я пропускаю?
///Loads the photos data using a completion handler
func getPhotoData(photo: Photo, reflectingEdits: Bool = true, completionHandler: @escaping (Data?) -> ()){
let options = PHImageRequestOptions()
options.isNetworkAccessAllowed = true
options.version = .original
if(reflectingEdits){
options.version = .current
}
manager.requestImageDataAndOrientation(for: photo.asset, options: options, resultHandler: {
data, uti, orientation, info in
print("Succesfully delivered image (\(String(describing: uti))) -> \(data?.count ?? 0) bytes")
completionHandler(data)
})
}
До
[<PHAssetResource: 0x28328eb50> {
type: video_cmpl
uti: com.apple.quicktime-movie
filename: IMG_0067.MOV
asset: 8B5B03FE-9862-4DD9-BB81-C9753FDE328B/L0/001
locallyAvailable: YES
fileURL: file:///var/mobile/Media/PhotoData/CPLAssets/group125/5571C124-DF27-4636-9AFC-23786A33850B.MOV
width: 980
height: 1308
fileSize: 2403227
analysisType: unavailable
cplResourceType: OriginalVidCompl
isCurrent: YES
}, <PHAssetResource: 0x283281dd0> {
type: photo
uti: public.heic
filename: IMG_0067.HEIC
asset: 8B5B03FE-9862-4DD9-BB81-C9753FDE328B/L0/001
locallyAvailable: YES
fileURL: file:///var/mobile/Media/PhotoData/CPLAssets/group125/5571C124-DF27-4636-9AFC-23786A33850B.HEIC
width: 3024
height: 4032
fileSize: 1331238
analysisType: never-download
cplResourceType: Original
isCurrent: YES
}]
После
[<PHAssetResource: 0x28329d320> {
type: adjustment
uti: com.apple.property-list
filename: Adjustments.plist
asset: 8B5B03FE-9862-4DD9-BB81-C9753FDE328B/L0/001
locallyAvailable: YES
fileURL: file:///var/mobile/Media/PhotoData/Mutations/PhotoData/CPLAssets/group125/5571C124-DF27-4636-9AFC-23786A33850B/Adjustments/Adjustments.plist
width: 0
height: 0
fileSize: 7129
analysisType: unavailable
cplResourceType: Unknown
isCurrent: NO
}, <PHAssetResource: 0x28329d440> {
type: video_cmpl
uti: com.apple.quicktime-movie
filename: IMG_0067.MOV
asset: 8B5B03FE-9862-4DD9-BB81-C9753FDE328B/L0/001
locallyAvailable: YES
fileURL: file:///var/mobile/Media/PhotoData/CPLAssets/group125/5571C124-DF27-4636-9AFC-23786A33850B.MOV
width: 980
height: 1308
fileSize: 2403227
analysisType: unavailable
cplResourceType: OriginalVidCompl
isCurrent: YES
}, <PHAssetResource: 0x28329cfc0> {
type: photo
uti: public.heic
filename: IMG_0067.HEIC
asset: 8B5B03FE-9862-4DD9-BB81-C9753FDE328B/L0/001
locallyAvailable: YES
fileURL: file:///var/mobile/Media/PhotoData/CPLAssets/group125/5571C124-DF27-4636-9AFC-23786A33850B.HEIC
width: 3024
height: 4032
fileSize: 1331238
analysisType: never-download
cplResourceType: Original
isCurrent: YES
}, <PHAssetResource: 0x28329d170> {
type: photo_full
uti: public.jpeg
filename: FullSizeRender.jpg
asset: 8B5B03FE-9862-4DD9-BB81-C9753FDE328B/L0/001
locallyAvailable: YES
fileURL: file:///var/mobile/Media/PhotoData/Mutations/PhotoData/CPLAssets/group125/5571C124-DF27-4636-9AFC-23786A33850B/Adjustments/FullSizeRender.jpg
width: 4032
height: 3024
fileSize: 2036693
analysisType: unavailable
cplResourceType: JPEGFull
isCurrent: NO
}]