2013-10-03 86 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文檔沒有提供有關結果默認順序的任何信息,因此假設有任何信息並不是一個好主意。

當然,爲了正確地指定排序描述符,你可能需要一個字段添加到你的管理對象進行排序,和值在創建對象時分配給它。它可能是一個增量索引字段,創建日期或類似的東西。

相關問題