Можно получить участников, но не считать NSMutableArray - PullRequest
2 голосов
/ 12 июня 2010

Я заполняю NSMutableArray из вызова CoreData. Я могу получить первый объект, но когда я пытаюсь получить счет, приложение вылетает с Program received signal: “EXC_BAD_ACCESS”. Как я могу получить счет?

Вот соответствующий код - я поместил комментарий в строку, где он падает.

- (void)viewDidLoad {
[super viewDidLoad];

managedObjectContext = [[MySingleton sharedInstance] managedObjectContext];

if (managedObjectContext != nil) {
    charactersRequest = [[NSFetchRequest alloc] init];
    charactersEntity = [NSEntityDescription entityForName:@"Character" inManagedObjectContext:managedObjectContext];
    [charactersEntity retain];
    [charactersRequest setEntity:charactersEntity];
    [charactersRequest retain];

    NSError *error;
    characters = [[managedObjectContext executeFetchRequest:charactersRequest error:&error] mutableCopy];
    if (characters == nil) {
        NSLog(@"Did not get results for characters: %@", error.localizedDescription);
    }
    else {          
        [characters retain];            
        NSLog(@"Found some character(s).");
        Character* character = (Character *)[characters objectAtIndex:0];
        NSLog(@"Name of first one: %@", character.name);
        NSLog(@"Found %@ character(s).", characters.count);  // Crashes on this line with - Program received signal:  “EXC_BAD_ACCESS”.
    }
}

}

И предыдущие объявления из заголовочного файла:

@interface CrowdViewController : UITableViewController {
NSManagedObjectContext *managedObjectContext;
NSFetchRequest *charactersRequest;
NSEntityDescription *charactersEntity;
NSMutableArray *characters;

}

Я немного озадачен и очень хотел бы узнать, что происходит.

Ответы [ 2 ]

3 голосов
/ 12 июня 2010

Счетчик является целым числом, поэтому вы должны были использовать% d при использовании его с NSLog

NSArray Reference

0 голосов
/ 12 июня 2010

Денежные средства вызваны тем, что count является методом, а не свойством NSArray, поэтому вы не можете использовать точечную нотацию для его вызова.Вы должны использовать скобочные обозначения таким образом:

 NSLog(@"Found %d character(s).", [characters count]);

Легко ошибиться, если вы работали на многих языках, которые используют точечную нотацию для вызова методов.

...