Базовые данные: при доступе к связи метод подсчета в NSSet не выполняется - PullRequest
2 голосов
/ 26 марта 2010

Я пытаюсь получить доступ к отношениям (один ко многим) программно.Моя модель данных содержит NSManagedEntity, называемый языком (с двумя строковыми атрибутами), с отношением к объекту под названием WordCategory (один ко многим).Я использую NSFetchRequest, чтобы получить все объекты языка.это отлично работаетЯ получаю значениеForKey для отношений, и это прекрасно работает.Я могу работать с его объектами.Однако, когда я пытаюсь отправить счетчик сообщений в NSSet, в котором хранятся объекты WordCategory, я получаю

Другими словами, эта строка работает:

       NSLog(@"word category count %@",[[wordCategory anyObject] valueForKey:@"name"]);

Эта не делает:

NSLog(@"word category count %@",[wordCategory count]

Я получаю сообщение: EXC_BAD_ACCESS в отладчике.

Вот остаток кода:

NSManagedObjectContext *moc = [myAppDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Language" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error: &error];
if (error) {
    [NSApp presentError:error];
    return;
}

NSManagedObject *obj = [results objectAtIndex:0];
NSSet *wordCategory = [obj valueForKey:@"category"];
NSLog(@"word category count %@",[wordCategory count]);

Я буду признателен за любой свет, чем кто-либоможет пролить в эту тайну.Спасибо за вашу помощь!

1 Ответ

5 голосов
/ 26 марта 2010
  • (NSUInteger) Количество * * +1002

Тип возвращаемого значения счетчика методов на NSSet - NSUInteger. Поэтому, если вы попытаетесь использовать% @ для ссылки на этот тип, вы получите сообщение: EXC_BAD_ACCESS в отладчике. Вы получаете доступ к типу значения, которое не ожидается.

Попробуйте вместо этого использовать% d.

NSLog (@ "количество слов слов% d", [количество слов слов]);

Отредактировано после комментария bobDevil (точный ответ - больше в комментариях):

NSLog (@ "количество слов слов% lu", [количество слов слов]);

Всего наилучшего.

...