【问题标题】:I need help arranging my Table View alphabetically我需要帮助按字母顺序排列我的表视图
【发布时间】:2012-07-05 11:46:53
【问题描述】:

我正在尝试使用此代码:

sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

我应该把它放在我的 viewDidLoad 中吗?我正在使用 NSMutableArray 来填充表格。

【问题讨论】:

    标签: iphone objective-c xcode ios5


    【解决方案1】:

    您应该使用它作为您的 tableview 的数据源。并返回委托方法中索引处的对象。

    排序后重新加载表格视图。

    【讨论】:

    • 我遇到了另一行看起来更合适的代码 NSSortDescriptor *sortParam= [NSSortDescriptor sortDescriptorWithKey:@"name" descending:YES]; [yourArray sortUsingDescriptors:[NSArray arrayWithObject:sortParam]];
    【解决方案2】:

    我认为您是从对服务器的 api 调用中获取这些值的。如果在 api 调用后调用 reload 函数之前那样对数组进行排序。

    【讨论】:

    • 那我一定是使用了错误的代码,因为那不是我想要做的。
    【解决方案3】:

    您基本上需要在第一次请求从UITableViewDataSource 获取数据之前或将数据加载到NSMutableArray 时对元素进行排序。如果您的数据已加载到您的 viewDidLoad: 中,则只需在加载数据后立即进行排序,您将能够使用数组中的项目响应 NSTableViewDataSource 请求,并且它们将被排序。

    如果项目到达缓慢,你可能想要延迟排序,这样你就不会做太多的排序操作,但基本上是在你告诉 NSTableView 新数据到达时执行。因此,如果您从服务器接收数据,例如(您声明不是),您可以在收到另一批条目后执行此操作。

    你实现了你的 UITableViewDataSource 方法了吗?

    【讨论】:

    • 我在 viewDidLoad NSSortDescriptor *sortParam= [NSSortDescriptor sortDescriptorWithKey:@"treeName" descending:YES]中找到了另一种使用此代码对数据进行排序的方法[ds sortUsingDescriptors:[NSArray arrayWithObject:sortParam]];一切正常,但是由于某种原因,所有包含字母 i 的字符串都在末尾​​span>
    • 听起来可能是不区分大小写的问题。尝试使用[NSSortDescriptor sortDescriptorWithKey: @"treeName" ascending: YES selector: @selector(caseInsensitiveCompare:)] 使比较不区分大小写。
    • 感谢您的回复。我使用了你的代码并最终得到了这个 NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey: @"treeName" 升序:YES 选择器:@selector(caseInsensitiveCompare:)]; [ds sortUsingDescriptors:[NSArray arrayWithObject:sort]];我现在明白我的问题是我没有使用不区分大小写。
    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多