es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Swift 5: Guardar AVAsset en UserDefaults

Los usuarios pueden desplazarse a través del feed y recuperar videos desde mi almacenamiento en la nube. Me gustaría cachear los videos (lo cual logro exitosamente temporalmente en un arreglo), pero también quiero poder recuperar los videos al reiniciar la aplicación. Actualmente, si el usuario cierra la aplicación y la vuelve a iniciar, la carpeta temporal está vacía, por supuesto.

¿Cómo puedo lograr eso?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr la memoria caché de videos de manera que puedan recuperarse incluso cuando se reinicie la aplicación, puedes hacer uso de NSUserDefaults para almacenar las rutas de los videos.

    Aquí están los pasos que puedes seguir:

    1. Cuando descargues un video desde el almacenamiento en la nube, guárdalo en una ubicación permanente en el sistema de archivos de la aplicación, como el directorio Documents.
    2. Agrega la ruta del video descargado a un arreglo videoPaths.

    3. Utiliza NSUserDefaults para almacenar el arreglo videoPaths. Puedes hacer esto utilizando el método set de NSUserDefaults, de la siguiente manera:

      let defaults = NSUserDefaults.standardUserDefaults()
      defaults.setObject(videoPaths, forKey: "videoPaths")
      defaults.synchronize()
      

    4. Cuando la aplicación se inicie nuevamente, recupera el arreglo videoPaths de NSUserDefaults y recorrelo en un bucle para recuperar cada video.
      let defaults = NSUserDefaults.standardUserDefaults()
      if let videoPaths = defaults.objectForKey("videoPaths") as? [String] {
         for path in videoPaths {
             let url = NSURL(fileURLWithPath: path)
             let asset = AVAsset(URL: url)
             // hace algo con el recurso
         }
      }
      

    Siguiendo estos pasos, podrás cachear los videos de manera que puedan recuperarse incluso si se reinicia la aplicación.

Comments are closed.