कोई तेज़ तरीका नहीं है लेकिन मैं निश्चित रूप से कुछ ऐसा सुझा सकता हूं जो मेरे लिए काम करे। सर्वश्रेष्ठ या नहीं - यह आपको तय करना है।
साथ ही आपका प्रश्न बहुत सामान्य है - क्योंकि इसमें मोबाइल ऐप के संपूर्ण बैकएंड इंफ्रास्ट्रक्चर को शामिल किया गया है। मैं यथासंभव विशिष्ट होने का प्रयास करूंगा -
1) एक php फ़ाइल के लिए एक http पोस्ट अनुरोध करें, जो mysql डेटाबेस के सभी डेटा का चयन करता है और परिणाम को ऐप को वापस देता है -
एक बार जब आप परिणाम प्राप्त कर लेते हैं, तो आप इसे नीचे दिए गए उदाहरण की तरह कोर डेटा में पार्स कर सकते हैं -
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) जांचें कि कोर डेटा में कौन सा डेटा मौजूद है => कुछ नहीं करना है, और कौन सा डेटा नया है => नए डेटा को कोर डेटा में सेव करें -
आप टाइम स्टैम्प के साथ अच्छी ओल हेड कॉल कर सकते हैं और जांच सकते हैं कि डेटा अपडेट किया गया है या नहीं। यदि डेटा अपडेट किया गया है - यह व्यक्तिगत कोर डेटा विशेषताओं को अपडेट करने में थोड़ा मुश्किल हो सकता है। मेरे लिए हमेशा काम किया है डिवाइस पर SQLITE बैकएंड को हटाना और डेटा लिखने की विधि को फिर से चलाना। आप नीचे दिए गए उदाहरण का उपयोग कर सकते हैं -
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}
}
}
उसके बाद आप writeDataToSqlieStore()
चला सकते हैं विधि फिर से।
आशा है कि यह मदद करता है।