Saltar al contenido

¿Cómo recibir una imagen de cloudkit?

Nuestro equipo de trabajo ha pasado mucho tiempo buscando la respuesta a tus búsquedas, te regalamos la soluciones de modo que deseamos que resulte de mucha apoyo.

Solución:

Simplemente lea el CKRecord que escribió y puede obtener el CKAsset leyendo el key Imagen. Puede obtener una UIImage utilizando el siguiente código.

var file : CKAsset? = record.objectForKey("Image")

func image() -> UIImage? 
    if let file = file 
        if let data = NSData(contentsOfURL: file.fileURL) 
            return UIImage(data: data)
        
    
    return nil

Después de descargar el CKAsset, necesitamos convertir el CKAsset en una UIImage. Podemos usar la siguiente extensión (código Swift 4):

extension CKAsset 
    func toUIImage() -> UIImage? 
        if let data = NSData(contentsOf: self.fileURL) 
            return UIImage(data: data as Data)
        
        return nil
    

Primero debe tener una forma de encontrar el ImageRecord específico que desea recuperar. Suponiendo que tiene el RecordID para el ImageRecord que guardó (puede obtenerlo del registro en el bloque de finalización saveRecord), puede hacer lo siguiente:

if let database = privateDatabase 
    database.fetchRecordWithID(recordID, completionHandler:  (record, error) -> Void in
        guard let record = record else 
            print("Error retrieving record", error)
            return
        

        guard let asset = record["Image"] as? CKAsset else 
            print("Image missing from record")
            return
        

        guard let imageData = NSData(contentsOfURL: asset.fileURL) else 
            print("Invalid Image")
            return
        

        let image = UIImage(data: imageData)
        imageView.image = image
    )

(Aunque definitivamente querrías estar haciendo algún manejo de errores donde esos print()son)

Si no guarda el ID de registro (o probablemente mejor: ID de registro.Nombre de registro para que pueda crear otro CKRecordID más tarde), necesitará alguna otra forma de encontrar el registro que está buscando. Si ese es el caso, le gustaría considerar usar CKDatabase's performQuery(_:inZoneWithID:completionHandler:) método.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.