cocoa - NSManagedObjectContext(): आईओएस 9.0 में 'init() `को बहिष्कृत किया गया था: उपयोग करें-initWithConcurrencyType




core-data (2)

मैं स्विफ्ट में कोर डेटा स्टैक के माध्यम से काम कर रहा था - डेमस्टिफाइड लेकिन जब मैं लाइन पर गया

self.context = NSManagedObjectContext()

मुझे चेतावनी मिली

`init()` was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead

मैं देखता हूं कि मैं self.context = लिए निम्न में से एक कर सकता हूं

NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.ConfinementConcurrencyType)
NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType)
NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType)

लेकिन चूंकि MainQueueConcurrencyType अब भी बहिष्कृत किया गया है जो मुझे MainQueueConcurrencyType और PrivateQueueConcurrencyType । इन दोनों के बीच क्या अंतर है और मुझे किस प्रकार का चयन करना चाहिए? मैंने इस दस्तावेज को पढ़ा, लेकिन मैं वास्तव में समझ में नहीं आया।


आपके पास अनिवार्य रूप से हमेशा कम से कम 1 संदर्भ होगा NSMainQueueConcurrencyType और NSMainQueueConcurrencyType साथ कई संदर्भ। NSPrivateQueueConcurrencyType आमतौर पर पृष्ठभूमि में मूल डेटा को सहेजने या लाने के लिए उपयोग किया जाता है (जैसे कि वेब सेवा के साथ रिकॉर्ड सिंक करने का प्रयास करना)।

NSMainQueueConcurrencyType मुख्य कतार से जुड़े एक संदर्भ बनाता है जो NSFetchedResultsController उपयोग के लिए बिल्कुल सही है।

डिफ़ॉल्ट कोर डेटा स्टैक NSMainQueueConcurrencyType साथ एक एकल संदर्भ का उपयोग करता है, लेकिन आप UI को प्रभावित नहीं करने वाले किसी भी काम को करने के लिए एकाधिक NSPrivateQueueConcurrencyType का लाभ NSPrivateQueueConcurrencyType एक बेहतर ऐप बना सकते हैं।


इन दो कार्यों को निम्न के साथ बदलें:

lazy var managedObjectContext: NSManagedObjectContext = {
    // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail.
    let coordinator = self.persistentStoreCoordinator
    var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
    managedObjectContext.persistentStoreCoordinator = coordinator
    return managedObjectContext
    }()

// MARK: - Core Data Saving support

func saveContext () {
    if managedObjectContext.hasChanges {
        do {
            try managedObjectContext.save()
        } catch {
            // Replace this implementation with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            let nserror = error as NSError
            NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
            abort()
        }
    }
}




nsmanagedobjectcontext