다음과 같은 NSManagedObject 하위 클래스가 하나 있는데, NSManagedObjectContext에 의해 일부 인스턴스가 저장되었습니다 ( ).CoreData : NSManagedObject를 기본 키로 정렬하는 방법은 무엇입니까?
@interface SomeModelObject : NSManagedObject @property (nonatomic, retain) NSString * text; @end
이제 기본 키 (자동 생성)별로 정렬 된 목록을 가져 오려고합니다. NSFetchRequest를 시도하고 런타임 오류가 발생했습니다 : "keypath id가 엔티티에 없습니다".
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeModelObject" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sort, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
기본 키별로 정렬 할 수 있습니까? 또는 정렬을 위해 Model 클래스에 일부 열을 추가해야합니까?
대단히 감사합니다! 정렬을 위해 일부 열을 추가하겠습니다. 예, 코어 데이터가 RDB가 아닌 개체 그래프를 처리합니다. 그러나 어떤 방법으로 NSSortDescriptor없이 데이터를 가져올 수 있다고 생각합니다. 삽입 된 순서로 가져 오려고합니다. 모든 모델 객체가 정렬 열을 가져야한다는 점이 조금 불편합니다. 그렇게 생각하지 않습니까? – taichino
순수한 RDB에서는 동일한 작업을 수행해야합니다 (예 : sqlite에 ROWID가 있지만 데이터베이스가 폐기 될 때 변경됩니다) ... "삽입 순서"의 개념은 귀하의 특정 비즈니스 사례 및 따라서, 대부분의 기업이 필요가 없다는 점을 감안할 때 "무료"로 제공되어야하는 것은 아닙니다. – bbum
음 ... 당신 말이 맞아요, 저의 구체적인 경우입니다. 수년 동안 데이터베이스 작업을 해왔으므로 지금 CoreData를 사용하는 데 어색함을 느낍니다 ... 어쨌든 계속 시도해 보겠습니다. 다시 한 번 감사드립니다! – taichino