2010-06-03 5 views
0

내용을 표시하기 위해 테이블 ​​뷰를 사용하여 핵심 데이터 자습서를 완성하고 재 작성했습니다. 그러나 테이블 뷰없이 뷰에서 가져 오기를 통해 엔티티에 액세스하려고합니다. 다음과 같은 가져 오기 코드를 사용했지만 반환 된 수는 항상 0입니다. SQLite 도구를 사용하여 데이터베이스를 열면 데이터가 존재합니다.핵심 데이터 혼란 : 테이블 뷰없이 가져 오기

NSManagedObject *entryObj; 
XYZDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Quote" inManagedObjectContext:managedObjectContext]; 
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 

[request setSortDescriptors:sortDescriptors]; 
[request setEntity: entity]; 

NSArray *results = [managedObjectContext executeFetchRequest:request error:nil]; 

if (results == nil) { 
    NSLog(@"No results found"); 
    entryObj = nil; 
}else { 
    NSLog(@"results %d", [results count]); 
} 

[request release]; 
[sortDescriptors release]; 

반환되는 계수는 항상 0입니다. 그것이어야합니다.

누구나 나 tableview와 함께 사용되지 않는 컨트롤러를 만드는 방법에 관한 참조 또는 자습서를 가리킬 수 있습니다.

답변

1

내가 말할 수있는 한, 모든 것이 잘 보입니다 (Objective-C의 키워드이므로 속성 이름으로 'id'를 사용하는 것에 대해 조금 걱정합니다). 정렬 설명자를 제거하고 변경 사항이 있는지 확인하십시오. 또한 오류 검사를 추가하십시오. 아마도 당신에게 말할 수있는 일이 일어날 것입니다. 그리고 나는 "Quote"가 엔티티의 올바른 이름이라고 가정합니다. 도움이되지 않으면 문제가 가져 오기 요청에 있다고 생각하지 않습니다. 그것은 여기에, 가치가 무엇인지에 대한

내가 그것을 쓸 것입니다 방법은 다음과 같습니다

XYZDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; 
NSManagedObjectContext * context = appDelegate.managedObjectContext; 

NSFetchRequest * request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Quote" inManagedObjectContext:context]; 
NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
[sortDescriptor release]; 
[request setEntity:[NSEntityDescription entityForName:@"Quote" inManagedObjectContext:context]]; 
NSError * error = nil; 
NSArray *results = [context executeFetchRequest:request error:&error]; 
[request release]; 

if (error) { 
    NSLog(@"ERROR: %@ %@", [error localizedDescription], [error userInfo]); 
} 

if (results == nil) { 
    NSLog(@"No results found"); 
    entryObj = nil; 
} 
else { 
    NSLog(@"results %d", [results count]); 
} 
+0

난 당신의 제안을 시도했습니다. 출력 된 오류는 코드가 실행중인 클래스의 이름입니다. 정렬 설명자없이 동일한 작업을 수행 할 때 "잘못된 주소"오류가 발생합니다. 결과에 관계없이 내가 "count : 0"을 반환하려고합니다. 이 경우에 coredata를 구현하는 추가 방법이 필요한지 궁금합니다. 참고로, 나는 읽기만하고 추가/삭제/업데이트를 시도하지 않습니다. –

+0

코드를 시도했지만 결과는 동일합니다 (결과 : 0). "견적"엔티티에 액세스하는 데 필요한 전부입니까, 아니면 누락 된 항목입니까? –

+0

마지막으로 수정했습니다. 시뮬레이터는 sqlite 데이터베이스가 추가 된 다른 폴더를 만들었습니다. 스위칭 데이터베이스는 그것을 고쳤습니다. 결국 코드가 정확했습니다. 도와 주셔서 감사합니다. –

관련 문제