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.
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. –
Cevabımı bazı temel kodları içerecek şekilde düzenledim. –
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? –