sql >> Base de Datos >  >> RDS >> Mysql

datos de sincronización rápida de datos básicos y una base de datos mysql

No hay una forma más rápida, pero definitivamente puedo sugerir algo que funcione para mí. Mejor o no, tú decides.

Además, su pregunta es muy genérica, ya que abarca toda la infraestructura de back-end de una aplicación móvil. Intentaré ser lo más específico posible -

1) Realice una solicitud de publicación http a un archivo php, que selecciona todos los datos de la base de datos mysql y devuelve el resultado a la aplicación -

Una vez que reciba el resultado, puede analizarlo en Core Data como el ejemplo a continuación:

    func writeDataToSqliteStore() throws {

                // Configure the Network Call here with NSURL & NSData returning an array that you can write to the Core Data SQLITE backend.
            do {
                jsonResponse = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as? NSArray
            } catch {
                print(error)
            }
                let localEntity = self.insertNewEntity("EntityName") as? CoreDataEntityClass

                for singleObject in jsonResponse {

                    localEntity.name = singleObject.valueForKey("name")
                    localEntity.address = singleObject.valueForKey("address")
            }
  }

2) Comprobar qué datos existen en los datos básicos => nada que hacer y qué datos son nuevos => guardar los datos nuevos en los datos básicos -

Puede hacer una buena llamada de cabeza con una marca de tiempo y verificar si los datos se han actualizado. Si los datos se han actualizado, podría ser un poco complicado actualizar los atributos de datos básicos individuales. Lo que siempre me ha funcionado es eliminar el servidor SQLITE en el dispositivo y volver a ejecutar el método de escritura de datos. Puede usar el siguiente ejemplo:

func removeSQLITEFiles() {
    let fileManager = NSFileManager.defaultManager()
        let URL1 = self.applicationDocumentsDirectory.URLByAppendingPathComponent("File.sqlite")
        let URL2 = self.applicationDocumentsDirectory.URLByAppendingPathComponent("File.sqlite-wal")
        let URL3 = self.applicationDocumentsDirectory.URLByAppendingPathComponent("File.sqlite-shm")

        if fileManager.fileExistsAtPath(URL1.path!) {
            do {
             try fileManager.removeItemAtURL(URL1)
            }
            catch {error}
        }

        if fileManager.fileExistsAtPath(URL2.path!) {
            do {
                try fileManager.removeItemAtURL(URL2)
            }
            catch {error}
        }

        if fileManager.fileExistsAtPath(URL3.path!) {
            do {
                try fileManager.removeItemAtURL(URL3)
            }
            catch {error}
        }

    }

Después de eso, puede ejecutar writeDataToSqlieStore() método de nuevo.

Espero que ayude.