2014-01-10 2 views
0

사전 응용 프로그램에서 작업하고 있습니다. 이 응용 프로그램은 핵심 데이터를 사용하고 있으며 핵심 데이터를 처음 접했습니다. 데이터베이스에서 단일 엔티티로 저장된 기록은 엔티티가 "영어"& "을 의미 을"두 속성이사전 사전했다. 그래서 사용자가 some char라고 말하면, UISearchBar에 "a"에서 시작하는 데이터베이스에서 레코드를 가져오고 싶습니다. 레코드를 가져 오려는 b보다 사용자 유형 데이터가 "ab"에서 시작하는 식이면 계속됩니다.코어 데이터에서 데이터를 가져 오는 중 오류가 발생했습니다.

나는 아래의 코드에 의해 같은 일을하려고 해요 :

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath English not found in entity <NSSQLEntity TamilEnglishDict id=1>' 

편집 :

이이 코드는 다음과 같은 오류 MSG 내 응용 프로그램 충돌을 실행

// Fetch the devices from persistent data store 

NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:ENTITY_NAME inManagedObjectContext:managedObjectContext]; 
[request setEntity:entity]; 
// retrive the objects with a given value for a certain property 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K beginswith[c] %@",@"English",searchText]; 
[request setPredicate:predicate]; 

// Edit the sort key as appropriate. 
/*NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"English" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
[request setSortDescriptors:sortDescriptors];*/ 

// Edit the section name key path and cache name if appropriate. 
// nil for section name key path means "no sections". 
/*NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"]; 
aFetchedResultsController.delegate = self;*/ 

NSError *error = nil; 
_searchResult = [managedObjectContext executeFetchRequest:request error:&error]; 

내 데이터 모델이 ...

Data Model

레코드를 올바르게 가져 오는 올바른 길로 안내 할 수있는 사람은 누구입니까?

+0

당신이 모델에 대해 뭔가를 말할 수 할 수 있을까? 엔티티에는 '영어'속성이 없습니다. –

+0

@flexaddicted 속성 "영어"가 있습니다. 내 모델이 걱정거리 인 한 그것을 설명하려고 노력합니다 .. XML 파일이 몇 개 있는데, 파일을 구문 분석하고 데이터베이스를 만들었습니다. managedObject에서 직접 2 개의 키 "영어"와 "의미"를 가진 setValue를 사용합니다. 그게 내가 데이터베이스를 만들고 내 질문에 설명했던 방식으로 레코드를 가져 오는 방법이다. – Suryakant

+0

모델보기. 'ENTITY_NAME'이란 무엇입니까? 가능한 경우 스크린 샷을 제공하십시오. –

답변

3

예 대소 문자를 구분합니다.

올바른 술어는 다음과 같습니다.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K beginswith[c] %@",@"english", searchText]; 

또는

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"english beginswith[c] %@", searchText]; 

그러나 다만

내가 쓴 managedObject에 그 값을 저장하는 동안 '[managedObject 의 setValue을 : [OBJ objectForKey : "영어"] forKey @ : "영어"@] ;

이제 질문을 편집하고 위의 설명을 설명하십시오. 무슨 소리 야?

어쩌면 당신은

[managedObject setValue:[obj objectForKey:@"English"] forKey:@"english"]; 
+0

나를 참아 주셔서 감사합니다. XML 파일에서 데이터베이스를 생성하는 동안 managedObject에 데이터를 저장하고 컨텍스트를 저장하는 방법입니다. – Suryakant

+0

@SuryakantSharma 환영합니다. –

+0

@SuryakantSharma 다른 문제가 있습니까? 그렇지 않은 경우 대답을 올바른 것으로 표시하십시오. 건배. –

0

코드 &을 보았습니다. 코드가 정확합니다. 사용중인 포지티브를 변경하기 만하면됩니다. 귀하의 문제가 해결되기를 바라는 바에 따라이 코드를 귀하의 술어 &으로 대체하십시오. conatain "ab"또는 "a"또는 "b"결과를 원하기 때문에 "startswith"대신 "contains"를 사용해야합니다.

문제가 있으면 알려주세요.

+0

포함 된 것을 사용했으나 전혀 작동하지 않습니다. contains를 사용할 때 내 앱이 오류로 다운 됨 *** 'NSInvalidArgumentException'이라는 캐치되지 않은 예외로 인해 앱이 종료 됨, 이유 : '술어에 대한 SQL 생성이 실행되지 않음 : (영어 포함 [cd]'w ')' – Suryakant

+0

영어가됩니다. 열 이름 및 검색 텍스트가 검색 문자열이됩니다 –

+0

왜 'BEGINSWITH'에서'CONTAINS '(으)로 변경하면 문제가 해결됩니까? 그건 사실이 아니야. 또한 'CONTAINS'는 처음보다 비싸다. –

관련 문제