2010-11-27 26 views
16

Çekirdek Verilerini kullanarak yeni bir proje ve bölünmüş bir iPad uygulaması ile uğraşıyorum ve bir öğeyi eklemek ve kaldırmak oldukça açık olduğu gibi merak ediyordum. Bunu metin tutmak için değiştirirseniz, o zaman bu metin UITextView'da gösterilebilir, CoreData'daki bir nesneyi nasıl düzenleyebilir veya üzerine yazabilirim?CoreData Düzenle/Üzerine Yaz Nesnesi

Bu nedenle kullanıcı, notlarını UITextView numaralı telefona yazıyor ve bunu bıraktıklarında düzenlemeyi yaptıklarında ve o anda seçtikleri notu (tablo görünümünde nesne) kaydediyorlar.

herhangi bir yardım sayesinde takdir.

cevap

33

Sadece alanların güncellenmesi gereken ne olursa olsun bir NSFetchRequest, değiştirme (basit bir myObject.propertyName setter tüm yapması gereken ise) kullanarak var olan bir nesneyi istemek ve sonra veri bağlamına bir tasarruf eylemi gerçekleştirmek.

DÜZENLEME kod örneği ekleyin. MCannon'a katılıyorum, Çekirdek Veriler kesinlikle okumaya değer.

Bu kod, projeyi çekirdek temsilci öğelerini içeren bir şablonla oluşturduğunuzu varsayar. Böylece, uygulama temsilcisinin yönetilen bir nesne içeriği vardır, vb. Burada kontrol edilmeyen bir hata olduğunu unutmayın, bu yalnızca temel koddur.

nesneyi

// Retrieve the context if (managedObjectContext == nil) { managedObjectContext = [(YourAppNameAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; } // Retrieve the entity from the local store -- much like a table in a database NSEntityDescription *entity = [NSEntityDescription entityForName:@"YourEntityName" inManagedObjectContext:managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:entity]; // Set the predicate -- much like a WHERE statement in a SQL database NSPredicate *predicate = [NSPredicate predicateWithFormat:@"YourIdentifyingObjectProperty == %@", yourIdentifyingQualifier]; [request setPredicate:predicate]; // Set the sorting -- mandatory, even if you're fetching a single record/object NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"yourIdentifyingQualifier" ascending:YES]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; [request setSortDescriptors:sortDescriptors]; [sortDescriptors release]; sortDescriptors = nil; [sortDescriptor release]; sortDescriptor = nil; // Request the data -- NOTE, this assumes only one match, that // yourIdentifyingQualifier is unique. It just grabs the first object in the array. YourEntityName *thisYourEntityName = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0]; [request release]; request = nil; 

Güncelleme

getiriliyor nesne

thisYourEntityName.ExampleNSStringAttributeName = @"The new value"; 
thisYourEntityName.ExampleNSDateAttributeName = [NSDate date]; 

kaydet değişim

NSError *error; 
[self.managedObjectContext save:&error]; 

Artık nesneniz/satırınız güncellenir.

+0

Tamam, beni işaret veya yapmak biraz kod örneği lütfen? Özür dilerim, CoreData’ya oldukça yeni bir örnek alıyorum ve bir örneğe sahip olmak benim için gerçekten yardımcı olacaktır. –

+1

Cevabımı bazı temel kodları içerecek şekilde düzenledim. –

+0

Kesinlikle okuyorum, yardımlarınız için teşekkürler. Bununla birlikte, birkaç şey: Getirme isteği, önceden yapılan - '(NSFetchedResultsController *) fetchedResultsController' yerine geçer mi? Ayrıca 'YourEntityName * thisYourEntityName', kafa karıştırıcı, gerçek varlık adı mı? Sadece hatalar alıyorum. Ve güncelleme ve yığınları kaydet, onlar getirme kodu ile kalıyorlar? –

4

http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdUsingMOs.html nasıl özelliklerini değiştirmek göstereceğiz ve bunları kurtaracak, nasıl bir varlık getirmesi size gösterecektir.

çekirdek veri gerçekten elma belgelerin çok okumak istiyorum ve aşina bir şeydir, uzun vadede saatlerce kurtaracak. Bu yardımcı olur umarım!

+0

Sayfa Bulunamadı. – UnderDog