【问题标题】:How to sort an array which contains objects with chars and decimals? [duplicate]如何对包含字符和小数的对象的数组进行排序? [复制]
【发布时间】:2015-08-10 13:50:25
【问题描述】:

要对我的数组进行排序,我使用以下方法:

self.myArray = [self.myArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([obj1 isKindOfClass:[ObjectVO class]] && [obj2 isKindOfClass:[ObjectVO class]]) {
        ObjectVO *myObject1 = (ObjectVO *)obj1;
        ObjectVO *myObject2 = (ObjectVO *)obj2;
        switch (sortType) {
        ....
           case 2:
           return [myObject1.name compare: myObject2.name];
        .....
        }
        return NSOrderedDescending;
}];

问题是当我有 2 个对象时:A100A50,A100 是列表中的第一个对象,A50 是第二个对象。 我的对象是刺。

我该如何解决这个问题?

【问题讨论】:

  • 您没有进行任何比较。你说的地方 // 我的代码。在那里添加比较代码。
  • 您是否要对十六进制进行排序?
  • @hasan83 我写道我的对象是字符串。并非在所有情况下我的字符串也包含数字,但在其他情况下确实如此。所以我必须解决这些情况。
  • 您可以通过以更合适的类型保存数据来解决问题。在这种情况下,具有列/行成员的自定义类。然后在该类上实现IsEqual
  • @hasan83 我说我用字符串对象对数组进行排序。我没有写完整的排序代码,因为当你看到方法的名称时,你必须知道它的外观。现在我添加了有关我的代码的更多详细信息。

标签: ios objective-c arrays sorting


【解决方案1】:

试试这个:

self.myArray = [self.myArray sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
    return [obj1 compare:obj2 options:NSNumericSearch];
}];

NSNumericSearch

字符串中的数字使用数值进行比较,即 Name2.txt

数字比较只适用于字符串中的数字,不适用 其他在真实数字中有意义的字符,例如 a 负号或小数点。

此选项仅适用于比较方法,不适用于查找。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-26
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多