TableView中的列数据排序

iOS测试

我使用的表格视图看起来像excel工作表类型可以说多列。在Excel表格中,在栏标题上添加平移手势以增加栏的宽度。我在对列数据进行排序时遇到问题。列数据始终按字母/字符串格式排序。而我有一些数字类型列以及日期类型。因此,所有列均按字符串排序。您能否建议一些选择来实现这一目标。我将所有数据作为Web服务的字典放置在数组中。

让我分享一些代码进行排序。

-(void)sortTableDataUsingSortKey:(NSString *)sortKey withAscending:(BOOL)isAscending {

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:isAscending selector:@selector(compare:)];

    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    NSArray *arrTemp = [[NSArray alloc] initWithArray:[data_array sortedArrayUsingDescriptors:sortDescriptors]];
    [data_array count]?[data_array removeAllObjects]:NSLog(@"Datsource Table Not null");
    [data_array addObjectsFromArray:arrTemp];
    arrTemp = nil;

    [_table_view reloadData];
}
iOS测试

我解决了这个问题。我只是根据字典的数据类型添加了条件排序描述符方法。在要添加数据的Data_array字典中,以适当的数据类型添加数据。例如,如果数据是数字,则将其作为数字/浮点数或NSDate添加到字典中。

现在,我按照排序列检查字典中的数据类型。并更改排序选择器(比较非字符串数据和使用caseInsensitiveCompare的字符串数据:),其余工作正常。

现在可行的最终方法是..

-(void)sortTableDataUsingSortKey:(NSString *)sortKey withAscending:(BOOL)isAscending {
    NSSortDescriptor *sortDescriptor = nil;

    if ([data_array count] && [[[data_array objectAtIndex:0] valueForKey:sortKey] isKindOfClass:[NSString class]]) {
            sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:isAscending selector:@selector(caseInsensitiveCompare:)];
        }
        else {
            sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:isAscending selector:@selector(compare:)];
        }

    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    NSArray *arrTemp = [[NSArray alloc] initWithArray:[data_array sortedArrayUsingDescriptors:sortDescriptors]];
    [data_array count]?[data_array removeAllObjects]:NSLog(@"Datsource Table Not null");
    [data_array addObjectsFromArray:arrTemp];
    arrTemp = nil;

    [_table_view reloadData];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对TableView JavaFx中的列进行排序?

对 JavaFX TableView 的列进行排序

按多列中的数据排序

mysql中特定列的数据排序问题

在R中对多列数据进行排序

对新数据中的列进行排序

如何在Excel中按数据对列进行排序/排序

显示时在AdvancedDataGrid弹性排序中对列数据进行排序

在TableView中按距离排序

如何使用 QML 中的 TableView 从 QtQuickControls 1 获取列数据?

JavaFX ,tableView 缺少一列中的数据

从20列的数据框中仅对2列进行排序

如何使用自定义模型类按节按字母顺序对tableView中的数据排序?

QTableView:如何按行索引(标题索引-1)对TableView中的输入数据进行排序?

如何对json数据进行排序并按字母顺序显示在tableView中

在tableview单元格中按字母顺序对来自swift firebase的多个数据进行排序

按列中的名称对pandas DataFrame中的数据进行排序

JavaFX:禁用TableView多列排序

按某些列Javafx对TableView进行排序

在 tableView 中显示列

对两列进行排序,并使用pandas为数据帧中的排序值创建新列

根据列表对列进行排序,然后对数据框中的另一列进行排序

按列对数据框中的某些行进行排序

如何在数据框的列中对元组进行排序

根据列名称对pandas数据框中的列重新排序

对熊猫中的数据框列进行自然排序

如何仅对熊猫数据框中的选定列进行排序

来自按时间ID排序的两列中的数据

在数据框中按多列分组的值排序