如何按保存顺序对表格视图中的数据进行排序?

Posted

技术标签:

【中文标题】如何按保存顺序对表格视图中的数据进行排序?【英文标题】:How to sort data in a Table View by the order in which they were saved? 【发布时间】:2014-03-16 17:08:48 【问题描述】:

我在 Xcode 中有一个表格视图,它由应用程序用户保存到 iCloud 的信息填充。所以我的问题是,每当用户保存他们的数据时,保存的数据就会被添加到数据表视图的每个底部,而不是顶部,这是我希望在保存后看到它的位置.正在保存的数据被保存到一个数组中,然后填充表格视图,但我不确定如何对数组进行排序,因为新数据经常被添加到它。这是我正在使用的数组的代码:

- (NSArray *)notes

    if (_notes) 
        return _notes;
    

    _notes = [[[NSUbiquitousKeyValueStore defaultStore] arrayForKey:@"AVAILABLE_NOTES"] mutableCopy];
    if (!_notes) _notes = [NSMutableArray array];

    return _notes;

此操作正在保存数据:

- (IBAction)save:(id)sender 


    // Notify the previouse view to save the changes locally
    [[NSNotificationCenter defaultCenter] postNotificationName:@"New Note" object:self userInfo:[NSDictionary dictionaryWithObject:self.finalScore.text forKey:@"Note"]];

    [self dismissViewControllerAnimated:YES completion:nil];



谢谢!

【问题讨论】:

看起来_notes是在notes方法中返回之前需要排序的数组。 问题是对现有数据进行排序?还是在顶部添加新数据? 问题在于对任何现有数据进行排序。 【参考方案1】:

您可以将包含日期/时间(连同您的笔记数据)的对象存储到数组中 - 然后您可以按该值对数组进行排序,以按创建顺序或反向创建顺序获取它们。

另一个选项可能是因为项目总是添加到最后,所以在表格中显示时只需以相反的顺序读取数组。这可能会有所帮助:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/instm/NSArray/reverseObjectEnumerator

事实上,看看 NSArray 上的所有方法 - 那里有一些非常好的和有用的东西。

希望这会有所帮助。

【讨论】:

以上是关于如何按保存顺序对表格视图中的数据进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何按日期对我的表格视图中的数组进行排序

按字母顺序对表格中的列名进行排序

按多列对数据视图中的结果集进行排序

Swift如何按距离对表格视图进行排序

在表格视图中显示时对数组进行排序

核心数据按格式化日期排序表格视图