【问题标题】:How to ignore sortDescriptor in NSFetchedResultsController如何忽略 NSFetchedResultsController 中的 sortDescriptor
【发布时间】:2012-05-15 14:13:14
【问题描述】:

我正在使用NSFetchedResultsController 来检索UITableView 的数据。 但问题是我必须使用sortDescriptorNSFetchedResultsController。 我不想对我的数据进行排序,我想按照我在表格中插入它们的顺序来显示表格中的数据。

有没有办法处理这个任务?

【问题讨论】:

    标签: iphone ios nsfetchedresultscontroller nssortdescriptor


    【解决方案1】:

    如果您希望数据按插入顺序排序,则需要一个字段来记录此顺序。

    一个很好的方法是为您的对象添加一个creationDate 属性,然后使用awakeFromInsert 方法自动记录插入时间。

    - (void)awakeFromInsert
    {
        [super awakeFromInsert];
        [self setValue:[NSDate date] forKey:@"creationDate"];
    }
    

    现在,当您想按插入顺序对它们进行排序时,一切就绪。

    【讨论】:

    • 一个更好的方法是在上下文保存通知中设置创建日期,这样在同一个保存中插入的所有对象都将具有相同的时间戳。
    【解决方案2】:

    感谢您的回答。我添加了另一个名为排序号的属性并以这种方式实现:

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    chapterSN = [userDefaults objectForKey:@"sortingNumber"];
    if (chapterSN == Nil) {
        NSInteger chapterSortingValue = 0;
        chapterSN = [NSNumber numberWithInteger:chapterSortingValue];
        [userDefaults setValue:chapterSN forKey:@"sortingNumber"];
     }
     else {
         NSInteger chapterSortingValue = [chapterSN integerValue];
         chapterSortingValue = chapterSortingValue+1;
         chapterSN = [NSNumber numberWithInteger:chapterSortingValue];
         [userDefaults setValue:chapterSN forKey:@"sortingNumber"];
     }
    

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2011-04-24
      相关资源
      最近更新 更多