2011-07-31 32 views
5

Sorun oldukça basit: ne zaman NSManagedObjectContext save:(NSError **)error yöntemini kullanmalıyım? Yaptığı tek şey, değiştirilen verileri kalıcı mağazaya kaydettiğimi anladığım kadarıyla. Xcode şablon tarafından oluşturulan uygulama temsilcisi, kaydetme yöntemini applicationWillTerminate numaralı telefondan çağırır, bu yeterli midir? Benim kod hakkındaSave: yönteminin ne zaman kullanılır: NSManagedObjectContext

Detayları:

  • Çok parçacıklı
  • Bir tek NSPersistentStoreCoordinator
  • Veri arka plan iş parçacığı değiştirildi kullanıyorum (böylece birden NSManagedObjectContext 'ler kullanılarak, arka planda işlemleri yapıyor) mergeChangesFromContextDidSaveNotification:
  • ile birleştirilmiştir. Daha fazla bilgiye ihtiyacınız varsa, lütfen sorun!

Ne zaman arayacağımı anlatan bir kılavuz bulamadım, bu yüzden hepinize sormaya karar verdim. Yanıtlarınız için şimdiden teşekkür ederiz!

cevap

6

Verilerinizin kaydedilmesini istediğinizde, kaydetmeyi her zaman aramanız gerekir. Bu uygulamayı her zaman garanti edemezsinizWillTerminate. Örneğin, uygulamanız bellek sorunları (veya başka bir şeyden birinden dolayı) nedeniyle çökerse, bu çağrı yapılmayacaktır.

Kullanıcı, kaydetmek için gerçekte veri üreten eylemi tamamladığında verileri kaydederdim.

+0

Web'den yeni bilgiler almak ve ekleyerek işiniz bittiğinde bunu kaydetmek istediğiniz modele eklemek gibi arka plan görevleri için? Cevabınız için teşekkürler! – Koen

+0

Evet - Tamamlandığında tasarruf ediyorum. Unutmayın, ManagedObjectContext'iniz iş parçacığıdır. Bu nedenle, kaydetmeyi sizin için yapacak bir arka plan iş parçacığı oluşturma. – dtuckernet

+0

Aynı iş parçacığı üzerinde 'save:' çağrısı yapıyorum, çoğu zaman arka plan iş parçacığı üzerinde bulunan NSManagedObjectContext oluşturmak. Bu sorun değil, aynı iş parçacığı üzerinde başlatma ve kaydetme gerçekleştiği sürece, doğru :-) – Koen

İlgili konular