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;
}
나는 조금 당황 해요 그리고 무슨 일이 일어나고 있는지 알아내는 주시면 대단히 감사합니다.
내 코드의 다른 곳에서'.count'를 사용했는데 다른 NSMutableArrays에서는 잘 작동합니다. 위의 코드는'[characters count]'를 사용할 때 또한 충돌합니다. – Curyous
죄송합니다, 오류가 있습니다. NSLog는 % d이어야하며 정수입니다. NSLog (@ "발견 된 % d 개의 문자.", characters.count); // – vodkhang
NSArray의'count' 메소드가 NSUInteger를 반환하기 때문에 올바른 포맷 지정자는 실제로'unsigned long '에 대해'% lu'가됩니다. –