sql >> Databáze >  >> RDS >> Mysql

rychlá synchronizace dat základních dat a databáze mysql

Neexistuje žádný nejrychlejší způsob, ale určitě mohu navrhnout něco, co pro mě funguje. Nejlepší nebo ne - je na vás, abyste se rozhodli.

Vaše otázka je také velmi obecná – protože zahrnuje celou backendovou infrastrukturu mobilní aplikace. Pokusím se být co nejkonkrétnější –

1) Proveďte http požadavek na soubor php, který vybere všechna data z databáze mysql a vrátí výsledek zpět do aplikace -

Jakmile obdržíte výsledek, můžete jej analyzovat v Core Data jako v příkladu níže -

    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) Zkontrolujte, která data existují v základních datech => není co dělat a která data jsou nová => uložte nová data do základních dat -

Můžete udělat dobrý ol head call s časovým razítkem a zkontrolovat, zda byla data aktualizována. Pokud byla data aktualizována - může být trochu složitější aktualizovat jednotlivé atributy Core Data. Vždy mi fungovalo smazání backendu SQLITE na zařízení a opětovné spuštění metody zápisu dat. Můžete použít příklad níže -

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}
        }

    }

Poté můžete spustit writeDataToSqlieStore() znovu metoda.

Doufám, že to pomůže.




  1. SQL Server 2008 – Jak vrátím uživatelsky definovaný typ tabulky z funkce s hodnotou tabulky?

  2. Jak vytvořit kontrolní omezení na jednom sloupci v SQL Server - SQL Server / TSQL výukový program, část 83

  3. integrace jara 3, hibernace 3, maven a mysql

  4. Jaký je rozdíl mezi klenotem mysql a mysql2