Sorting 如何解决:为什么coreData(NSFetchedResultsController)在iOS5和iOS4中排序不同

Sorting 如何解决:为什么coreData(NSFetchedResultsController)在iOS5和iOS4中排序不同,sorting,ios5,core-data,ios4,nsfetchedresultscontroller,Sorting,Ios5,Core Data,Ios4,Nsfetchedresultscontroller,我有一个使用NSFetchedResultsController填充的tableview。 在didselectrowatinexpath上,我正在更新当前行。这里的排序不应该改变。所选行的不同之处在于,我将其标记为已读。没有标题变更之类的 在iOS4中,行被更新并仍保留在当前位置,它不会移动到节的末尾。这是正确的方法 在iOS5中,行也会被更新,但它会移动到节的末尾。我想防止这种情况发生。我该怎么做?为什么会这样 请参阅我的代码: - (NSFetchedResultsController *

我有一个使用NSFetchedResultsController填充的tableview。
didselectrowatinexpath
上,我正在更新当前
。这里的排序不应该改变。所选行的不同之处在于,我将其标记为已读。没有标题变更之类的

在iOS4中,行被更新并仍保留在当前位置,它不会移动到节的末尾。这是正确的方法

在iOS5中,行也会被更新,但它会移动到节的末尾。我想防止这种情况发生。我该怎么做?为什么会这样

请参阅我的代码:

- (NSFetchedResultsController *)fetchedResultsController
{
if (__fetchedResultsController != nil)
{
    return __fetchedResultsController;
}


NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntitySetsCardsInbox" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *inboxPred = [NSPredicate predicateWithFormat:@"archived == 0 AND cardId != 0"];
[fetchRequest setPredicate:inboxPred];


if (sortString == nil) {
    //sortString = [[NSString alloc] initWithString:@"sortingOrder"];
    sortString = [[NSString alloc] initWithString:@"colorOrder"];
    sortAsc = NO;
}


if ([sortString isEqualToString:@"cardTitle"]) {
    NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:sortAsc selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
    NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor2, nil] autorelease];
    [fetchRequest setSortDescriptors:sortDescriptors];

    XLog(@"sortDescriptors: %@", sortDescriptors);
} else {
    NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:sortAsc] autorelease];
    NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor2, nil] autorelease];
    [fetchRequest setSortDescriptors:sortDescriptors];

    XLog(@"sortDescriptors: %@", sortDescriptors);
}


NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

    [...]
}    

我认为当您更新行时,您的排序描述符正在更改。再添加一个sortdescriptor来修复列表,然后再次检查。在我的情况下,我有一个非常类似的问题,它解决了我的问题。也许你的也是