Загрузка файла React Native CameraRoll

#swift #react-native #react-native-ios #react-native-native-module

#swift #react-native #react-native-ios #react-native-собственный модуль

Вопрос:

Я пытаюсь создать пользовательскую галерею изображений, чтобы пользователь мог выбирать из нее несколько изображений и загружать с помощью FormData, но на iOS из библиотеки CameraRoll он получает ph: //SOMETEXT своего рода uri, который является «localIdentifier» и описан в этом выпуске https://github.com/react-native-community/react-native-cameraroll/issues/195#issuecomment-655549166 и я пытаюсь создать swift bridge для реализации этой функции, которая может возвращать реальный uri изображения, как он объясняет, но когда я пытаюсь

 let photo = PHAsset.fetchAssets(withLocalIdentifiers: 
['localUriGotFromReactNativeCameraRool'], options: .none).firstObject
  

в моей функции он всегда возвращает пустой объект без фактического изображения

это мой полный код

 import Foundation
import Photos
@objc(RNFetchAssets)
class RNFetchAssets: NSObject {


  @objc
  func fetch(
    _ localUri: String,
    resolve: RCTPromiseResolveBlock,
    rejecter reject: RCTPromiseRejectBlock
  ) -> Void {

  let requestOptions = PHImageRequestOptions()
  requestOptions.isSynchronous = false
  let photo = PHAsset.fetchAssets(withLocalIdentifiers: [localUri], options: .none).firstObject
  print(photo ?? "None");
  //resolve(photo)

  }

  private func fetchOptions() -> PHFetchOptions {
  
      let fetchOptions = PHFetchOptions()
  
      fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
      return fetchOptions
     }


  @objc
  static func requiresMainQueueSetup() -> Bool {
   return true
 }

 }
  

Комментарии:

1. проблема заключалась в префиксе «ph: //» локального идентификатора, я удалил его, и теперь он получает phasset, но я не знаю, как преобразовать его в объект filename, type, uri, чтобы javascript мог его прочитать