Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कोर डेटा का त्वरित सिंक डेटा एक mysql डेटाबेस

कोई तेज़ तरीका नहीं है लेकिन मैं निश्चित रूप से कुछ ऐसा सुझा सकता हूं जो मेरे लिए काम करे। सर्वश्रेष्ठ या नहीं - यह आपको तय करना है।

साथ ही आपका प्रश्न बहुत सामान्य है - क्योंकि इसमें मोबाइल ऐप के संपूर्ण बैकएंड इंफ्रास्ट्रक्चर को शामिल किया गया है। मैं यथासंभव विशिष्ट होने का प्रयास करूंगा -

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() चला सकते हैं विधि फिर से।

आशा है कि यह मदद करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मुझे mysqli (डेटाबेस) कनेक्शन कब बंद करना होगा?

  2. Mysql का उपयोग करके इनपुट और आउटपुट पैरामीटर के साथ इकाई फ्रेमवर्क कोर में संग्रहीत प्रक्रिया को कैसे कॉल करें

  3. Laravel डेटाबेस से कनेक्ट नहीं हो सकता - माइग्रेशन - त्रुटि 2002

  4. MYSql कॉन्फिग बाइंड-एड्रेस 0.0.0.0 पर सेट है लेकिन नेटस्टैट उबंटू पर अलग दिखाता है

  5. Laravel 5.2 का उपयोग करके MySQL त्रुटि कोड और संदेशों को कैसे कैप्चर करें?