2012-11-07 57 views
1

我是iphone开发新手,需要一些指导来自定义排序iOS中的数组。我想排序出现在UIPickerView中的对象。传递给UIPickerView的对象位于数组中。按字母顺序对数组进行排序,然后由UIPickerView选择

当我打印阵列出来,它看起来像这样:

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

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

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

它打印出:阿尔法

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

我该怎么做?

我尝试这样做:

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

我该怎么做自定义排序基础上,str_name所以它是按字母顺序排列?需要一些指导...真的很感谢任何帮助...

回答

2

试试这个。

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

当我这样做,它说: “不兼容的指针类型从分配给 '的NSMutableArray * _strong' '的NSArray * _strong'” ... – lakesh

+0

你如何分配? – iDev

+0

在你的代码之后,我将sortedArray赋值给objectModelName。它看起来像这样:NSArray * sortedArray = [objectModelName sortedArrayUsingComparator:^(ObjectsInfo * firstObject,ObjectsInfo * secondObject)return [firstObject.str_name compare:secondObject.str_name]; }]; objectModelName = sortedArray; – lakesh

3

[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]; 

    } 
相关问题