2013-10-03 50 views
2

这就是我如何插入数据,iOS - 如何排序从CoreData获取的托管对象?

NSEntityDescription * entityDescription = [NSEntityDescription entityForName:[DOSnow entityDescription] inManagedObjectContext: proxy.managedObjectContext]; 
DOCurrentCondition *doSnow = [[[DOSnow alloc] initWithEntity:entityDescription insertIntoManagedObjectContext: proxy.managedObjectContext] autorelease]; 
NSXMLElement *snowConditionsElement = [[roseElement elementsForName:SNOW] lastObject]; 
NSArray *snowElements = [snowConditionsElement children]; 

for (NSXMLElement *snowElement in snowElements) 
{ 
    NSEntityDescription * entityDescription = [NSEntityDescription entityForName:[DOPair entityDescription] inManagedObjectContext: proxy.managedObjectContext]; 
    DOPair *pair = [[[DOPair alloc] initWithEntity:entityDescription insertIntoManagedObjectContext: proxy.managedObjectContext] autorelease]; 
    pair.key = [snowElement name]; 
    pair.value = [snowElement stringValue]; 
    [doSnow addConditionsObject: pair]; 
} 
[proxy save]; 

这就是我如何获取数据,

- (NSArray *) fetchSnowConditions 
{ 
    ApplicationFacade *appFacade = [ApplicationFacade appFacade]; 
    NSManagedObjectContext *context = appFacade.rProxy.managedObjectContext; 
    NSFetchRequest * request = [[[NSFetchRequest alloc] init] autorelease]; 
    [request setEntity:[NSEntityDescription entityForName:[DOSnow entityDescription] inManagedObjectContext:context]]; 
    NSError *error; 
    NSArray *result = [context executeFetchRequest:request error:&error]; 
    return result; 
} 

所以我没有得到的数据相同的顺序我插入。

回答

4

你必须使用[NSFetchRequest setSortDescriptor:]才能给你结果的有意义的顺序。 NSFetchRequest文档没有提供有关结果默认顺序的任何信息,因此假设有任何信息并不是一个好主意。

当然,为了正确地指定排序描述符,你可能需要一个字段添加到你的管理对象进行排序,和值在创建对象时分配给它。它可能是一个增量索引字段,创建日期或类似的东西。

相关问题