Настройка основных отношений с Fetch Requests
Я хочу установить базовые отношения с двумя объектами в Core Data, но эти отношения либо не сохраняются, либо не работают должным образом, и я не уверен, почему.
Две сущности Character
а также Avatar
, это отношения один-к-одному. Персонаж может иметь 1 аватар. Технически это должен быть "один аватар, которым могут владеть многие персонажи", но об этом я расскажу позже.
Я хочу добавить персонажей и назначить им аватар.
Уже есть 10 аватаров в Core Data и 1 символ, оба из которых я проверял через Терминал и SQLite.
Проблема в том, что у меня возникают проблемы с "поиском аватара по имени и сохранением отношений с персонажем".
До сих пор,
Я настроил запрос на выборку с именем: "frqAvatarWithName", где предикат имеет следующую структуру:
[Цитата]
имя == $ AVATAR_NAME
[/ Цитата]
Это так: я могу найти аватар с определенным именем; и тогда я могу создать отношения с персонажем.
Проблема 1: он выполняет запрос, но затем никогда не отображает количество записей.
Я получаю EXC_BAD_ACCESS
ошибка в режиме отладки, и я проследил ее до обработки шаблона запроса выборки - так, это должно быть ошибка или я сделал это неправильно.
Проблема 2: Я не уверен, что я даже правильно настраиваю эти "базовые" отношения.
[код]
// This code is meant to find an avatar with a certain name and then save the relationship
// between a character and said avatar.
// This is my app delegate file for the moment
// All the files are present, and I have deleted/recreated the app various times
-(void)characterMaker
{
NSLog(@"Inside characterMaker...");
NSError *error = nil;
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObjectModel *model = [self managedObjectModel];
// Find an avatar with a specific name
NSString *nameToFind = @"avt_player_1";
// Use a Fetch request template
NSDictionary *subs = [NSDictionary dictionaryWithObjectsAndKeys:nameToFind, @"AVATAR_NAME", nil];
NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"frqAvatarWithName"
substitutionVariables:subs];
// Set the entity to use
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Avatar"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
// Execute the query (it never even reaches this point)
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// Handle the error
NSLog(@"Error -- %@", [error localizedDescription]);
abort();
}
NSLog(@"Found %@ records", [fetchedObjects count]);
// Print out avatar names
for (Avatar *a in fetchedObjects)
{
NSLog(@"Name = %@", [a valueForKey:@"name"]);
}
// This is where I would use `a` and store it in a character entity, and thus create the relationship
[/код]
1 ответ
Я отказался от этого и сделал весь проект с проектом FMDatabase и SQLite; Я смог решить проблему таким образом.
Тема закрыта.