Tidak ada cara tercepat tetapi saya pasti dapat menyarankan sesuatu yang cocok untuk saya. Terbaik atau tidak - terserah Anda untuk memutuskan.
Juga pertanyaan Anda sangat umum - karena mencakup seluruh infrastruktur backend aplikasi seluler. Saya akan mencoba sespesifik mungkin -
1) Buat permintaan posting http ke file php, yang memilih semua data database mysql dan mengembalikan hasilnya ke aplikasi -
Setelah Anda menerima hasilnya, Anda dapat Parse di Data Inti seperti contoh di bawah ini -
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) Periksa data mana yang ada di data inti => tidak ada hubungannya, dan data mana yang baru => simpan data baru di data inti -
Anda dapat melakukan panggilan kepala yang baik dengan Stempel Waktu dan memeriksa apakah data telah diperbarui. Jika data telah diperbarui - mungkin akan sedikit rumit memperbarui atribut Data Inti individu. Apa yang selalu berhasil bagi saya adalah menghapus backend SQLITE pada perangkat dan menjalankan metode penulisan data lagi. Anda dapat menggunakan contoh di bawah ini -
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}
}
}
Setelah itu Anda dapat menjalankan writeDataToSqlieStore()
metode lagi.
Semoga membantu.