簡體   English   中英

iOS-如何對從CoreData獲取的托管對象進行排序?

[英]iOS - How can I sort the managed objects fetched from 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;
}

因此,我沒有以與插入相同的順序獲取數據。

您必須使用[NSFetchRequest setSortDescriptor:]來獲得有意義的結果排序。 NSFetchRequest文檔沒有對結果的默認順序進行任何說明,因此,假設存在任何默認結果不是一個好主意。

當然,為了正確地指定排序描述符,您可能需要向您的托管對象添加一個字段進行排序,並在創建對象時為其分配一個值。 它可以是遞增的索引字段,創建日期或類似的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM