2011-10-18 1 views
0

이 코드가 NSLog(@"Count: %@", [fetchedObjects count]); 일 때 EXC_BAD_ACCESS 오류가 발생합니다. fetchedObjects가 nil이 아니기 때문에 객체가 아직 가져 오지 않았기 때문에 그런 것처럼 보입니다. 나는 lastObject에 대한 count을 변경하면 작동하고 다음이 콘솔에 인쇄됩니다 것으로 나타났습니다가져온 개체에서 count 호출시 EXC_BAD_ACCESS

<Albums: 0x4dc7120> (entity: Albums; id: 0x4d9ad60 <x-coredata://xxxxxxxxxxxxxxxx/Albums/p1> ; data: <fault>)

코드

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Albums" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 
NSError *error = nil; 
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
if (error != nil) { 
    NSLog(@"Error: %@", error); 
} 
if (fetchedObjects != nil) { 
    NSLog(@"objects is not nil"); 
} 

NSLog(@"Count: %@", [fetchedObjects lastObject]); 
for (Albums *info in fetchedObjects) { 
    NSLog(@"Album: %@", info); 
    NSLog(@"Name: %@", info.name); 
}   
[fetchRequest release]; 

당신의 어떤 사람이 어떤 포인터가있는 경우, 그 것 큰.

감사합니다.

업데이트 나는 형식 지정자 % d 또는 % 내가, 내 실수해야 깨달았다. 그러나 numbersOfRowsInSection 메서드에서 count 함수를 호출 할 때 같은 오류가 발생합니다. 형식 지정

답변

1

사용 %d 또는 %iINT 값을 인쇄합니다.

NSLog(@"Count: %d", [fetchedObjects count]); 
+0

맞습니다.하지만 독자적으로 카운트 기능을 호출하면 정확히 동일한 오류가 발생합니다. 그러면 문제가 무엇이겠습니까? – xidew

+0

빈 스택이 맞다면 가져온 객체의 개수를 정수 값으로 출력하고 object에 대해 % @로 로깅하므로 % d와 함께 인쇄해야합니다. – Sabby

0

대답은 거의 맞다 :

NSLog(@"Count: %d", [fetchedObjects count]); 

당신은 또한 그것을 잘 작동합니다 fetchedObjects

[fetchedObjects isKindOfClass:[NSArray class]]; 

의 유형을 확인하고 계산 방법을 호출해야합니다.

+0

executeFetchRequest 함수는 NSArray를 반환한다고 생각 했습니까? NSArray를 원한다고 지정해야합니까? – xidew

+0

예 저장하고있는 값이 배열이 아니라고 생각합니다. 즉, [self.managedObjectContext executeFetchRequest : fetchRequest error : & error];에 의해 다른 것을 얻고 있다는 뜻입니다. 이것이 카운트가 충돌하는 이유입니다. 유익한 추측이 될 수 있습니다. 도움이된다면 시도해보십시오. – UPT