2010-06-12 6 views
2

CoreData 호출에서 NSMutableArray를 채 웁니다. 첫 번째 개체를 얻을 수 있지만 카운트를 얻으려고하면 앱이 충돌합니다 Program received signal: “EXC_BAD_ACCESS”. 카운트를 얻으려면 어떻게해야합니까?멤버를 얻을 수 있지만 NSMutableArray의 수가 아님

다음은 관련 코드입니다. 충돌이 발생한 행에 주석을 달았습니다.

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

}

나는 조금 당황 해요 그리고 무슨 일이 일어나고 있는지 알아내는 주시면 대단히 감사합니다.

답변

3

카운트가 카운트하는 방법이 아닌 특성 때문에 현금이 발생

NSArray Reference

+0

내 코드의 다른 곳에서'.count'를 사용했는데 다른 NSMutableArrays에서는 잘 작동합니다. 위의 코드는'[characters count]'를 사용할 때 또한 충돌합니다. – Curyous

+0

죄송합니다, 오류가 있습니다. NSLog는 % d이어야하며 정수입니다. NSLog (@ "발견 된 % d 개의 문자.", characters.count); // – vodkhang

+0

NSArray의'count' 메소드가 NSUInteger를 반환하기 때문에 올바른 포맷 지정자는 실제로'unsigned long '에 대해'% lu'가됩니다. –

0

NSLog와 함께 사용할 때 % d 개를 사용 할 뻔 정수 그렇습니다,있는 NSArray의 '당신이 할 수 있도록 점 표기법을 사용하여 전화하십시오. 당신은 thusly 히 대괄호 표기법을 사용해야합니다 :

그것은 당신이 메소드를 호출 할 점 표기법을 사용합니까 많은 언어에서 일했다면 있도록 쉬운 실수
NSLog(@"Found %d character(s).", [characters count]); 

.

관련 문제