Проблема обновления объекта CoreData - PullRequest
2 голосов
/ 28 ноября 2010

У меня есть этот пример кода, демонстрирующий, как обновить объект в основных данных, однако у меня есть небольшая проблема:

// 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;

Эта строка:

YourEntityName *thisYourEntityName = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0];

Я не понимаюто, что я должен использовать вместо «YourEntityName», из того, что я собрал, форма, которая мне помогала, состоит в том, что я должен использовать имя сущности из модели данных, но, похоже, оно не работает, я просто получаю необъявленную ошибку.

У меня есть сущность с именем 'Event', и у этой сущности есть два атрибута с именами userNote и timeStamp.

Я работаю с этим с совершенно новым проектом ipad с чистым разделенным представлением, использующим основные данные.Я хочу запустить это в textViewDidEndEditing, чтобы, когда пользователь закончил печатать свою заметку, он обновлял объект.

1 Ответ

2 голосов
/ 28 ноября 2010

Замените YourEntityName на имя класса , используемого для представления вашей сущности. Если вы объявили пользовательский класс для вашей сущности в XCode, укажите этот класс здесь. В вашем случае кажется, что вы не объявили пользовательский класс для вашей сущности. В этом случае используйте NSManagedObject в качестве класса сущности.

В редакторе модели данных XCode вы можете указать как имя, так и класс для сущности. Они не одно и то же. Имя сущности используется для ссылки на сущность в таких выражениях:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];

Класс сущности указывает класс, который будет использоваться для управляемых объектов этой сущности. При использовании Core Data разработчики часто создают собственные классы для использования их объектами, но это не требуется. Если вы хотите использовать пользовательский класс для сущности, вы должны создать этот класс самостоятельно (как подкласс NSManagedObject) и указать это имя класса в редакторе модели данных в XCode. Если вы не укажете пользовательский класс, NSManagedObject используется для представления объектов сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...