2010-06-16 15 views
7

Bir Çekirdek özellik deposundaki bir Dönüştürülebilir özelliğe NSMutableArray kaydediyorum. Varlığı NSMutableArray'daki verilerle düzgün bir şekilde oluşturabilir ve daha sonra bunu mülkün dışına yükleyebilir ve hatta değişiklikler yapabilir. Uygulamamı gezip tekrar eriştiğimde değişikliklerim kaydedilir. Ancak uygulamayı yeniden yüklediğimde, değişiklikler ana veri deposunda kaydedilmedi. Varlıktaki diğer değişiklikler - ör. NSString olarak kaydedilen başlığının değiştirilmesi, uygulamayı bıraktığımda ve yeniden açtığımda bile kaydedilir.Çekirdek Veriler, dönüştürülebilir özelliklerde değişiklik kaydetmiyor

another StackOverflow question numaralı belgede okudum. Dönüştürülebilir öznitelikler değişikliklerin otomatik olarak bildirilmediğini ve "kaydetmeden önce uygun ayarlayıcıyı" çağırmam gerektiğini okur. Ancak, gerçek ayarlayıcı işlevlerini kullanırken bile didChangeValueForKey numaralı telefonu aramayı denedim - özellik doğru şekilde kaydedilmedi. İyi fikirlerin var mı? Sen gerekir

cevap

6

, sen bir dönüştürülebilir özelliği "re-set" not olarak:

id temp = [myManagedObject myTransformableAttribute]; 

//.. do something with temp 

[myManagedObject setMyTransformableAttribute:temp]; 

o doğru olanı yapmak böylece Çekirdek Veri uygun keyfi bir dönüştürülebilir nesneyi izlemek verebilecek bir yolu yoktur 'otomatik olarak.

Dahası, size dönüştürülebilir niteliğini değiştirmek sonra aslında yönetilen nesne bağlamı kaydetmek emin olmalıdır: Programın tek çalıştırmak sırasında

NSError *error; 
if(![[myManagedObject managedObjectContext] save:&error]) { 
    //present error 
} 

, kaydedilmemiş değişiklikler görülebilir görünecektir yönetilen nesne bağlamı nedeniyle değiştirilmiş örnekleri bellekte tutar. Ancak içeriği kaydetmeden, bu değişiklikler diske kalıcı olmaz.

+5

ile çalışan değildi ve ben uygun ayarlayıcı yöntemleri erişen ve düzgün bağlamı tasarrufu nedeni budur (diğer nitelikler kanıt olarak kaydedilen elde edildi). Benim durumumda çözüm, türü bir NSArray olarak değiştirmekti. – JoBu1324

+0

@ JoBu1324 Bu konuya çok teşekkür ederim. – BluGeni

+0

@BluGeni Benim için zevk! – JoBu1324

0

Sadece özelliği yeniden ayarlamanız gerekmediğini fark ettim. Ama aynı zamanda başka bir örneğe de ihtiyacınız var. ben dönüştürülebilir özellik olarak NSMutableArrays ile bu sorunu yaşadıysanız NSMutableArray

Transformable *copy = [managedObject.transformableProperty copy]; 

// do stuff 

managedObject.transformableProperty = copy; 
İlgili konular