【问题标题】:Sorting an array by alphabetical order before it is selected by UIPickerView在 UIPickerView 选择数组之前按字母顺序对数组进行排序
【发布时间】:2012-11-07 08:19:58
【问题描述】:

我是 iphone 开发新手,需要一些指导才能在 iOS 中对数组进行自定义排序。我想对 UIPickerView 中出现的对象进行排序。传递给 UIPickerView 的对象在一个数组中。

当我打印出数组时,它看起来像这样:

    "<ObjectsInfo: 0x1c5249f0>",
    "<ObjectsInfo: 0x1c524940>",
    "<ObjectsInfo: 0x1c5248e0>",
    "<ObjectsInfo: 0x1c524890>",
    "<ObjectsInfo: 0x1c524840>",
    "<ObjectsInfo: 0x1c524a90>",

当我打印出第一个对象的名称时:

    ObjectsInfo *object = [objectModelName objectAtIndex:1];
    NSLog(@"%@",object.str_name);

打印出来:Alpha

给出的值是示例。我想按字母顺序对数组 objectModelName 进行排序。

我该怎么做?

我试过了:

[objectModelName sortUsingSelector:@selector(compare:)];

如何根据 str_name 进行自定义排序,使其按字母顺序排列?需要一些指导...非常感谢任何帮助...

【问题讨论】:

    标签: objective-c ios arrays sorting uipickerview


    【解决方案1】:

    [objectModelName sortUsingSelector:@selector(compareItem:)];

    在 ObjectsInfo.h 中

      - (NSComparisonResult)compareItem:(ObjectsInfo *)anotherItem;
    

    在 ObjectsInfo.m 中

      - (NSComparisonResult)compareItem:(ObjectsInfo *)anotherItem{
    
        return [self.str_name compare:anotherItem.str_name options:NSCaseInsensitiveSearch];
    
      }
    

    【讨论】:

      【解决方案2】:

      试试这个。

      NSArray *sortedArray = [objectModelName sortedArrayUsingComparator:^(ObjectsInfo *firstObject, ObjectsInfo *secondObject) {
                  return [firstObject.str_name compare:secondObject.str_name];
              }];
      

      【讨论】:

      • 当我这样做时,它说:“不兼容的指针类型从 'NSArray *_strong' 分配给 'NSMutableArray *_strong'”......
      • 在您的代码之后,我将 sortedArray 分配回 objectModelName。它看起来像这样:NSArray *sortedArray = [objectModelName sortedArrayUsingComparator:^(ObjectsInfo *firstObject, ObjectsInfo *secondObject) { return [firstObject.str_name compare:secondObject.str_name]; }];objectModelName = sortedArray;
      • 尝试使用 objectModelName = [NSMutableArray arrayWithArray:sortedArray];在这一行之后。
      • 该行将数组转换为 mutablearray 版本?
      • 是的...谢谢...出于好奇?我可以使用可变副本吗?例如 arrModelName =[sortedArray mutableCopy];?效果一样吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多