2014-04-04 109 views
-1

所以我有一个人mutablearray其中每个对象包含3个NSString属性:firstName,lastName和age。我想知道如何对这些对象进行排序,以便按姓氏按字母顺序排列,以便我可以在表格视图中显示该对象(稍后通过单击名称进行编辑)。其他的设置都很好,只是不是名称在表格中显示的方式。排序NSMutableArray中的对象

我使用

[self.person [email protected](caseInsensitiveCompare:)]; 

尝试,但这种返回错误:无法识别的选择发送到实例。
所有帮助表示赞赏:)


解决它通过使用:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES]; 
[self.person sortUsingDescriptors:[NSArray arrayWithObject:sort]]; 

感谢所有的输入:)

+0

可能重复[如何排序与自定义对象的NSMutableArray?](http://stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it) – vikingosegundo

+0

你不调用要排序的属性上的排序方法。你可以在包含你要排序的对象的数组上调用它们。 – vikingosegundo

回答

1

你需要在人类别中,如果实现一个比较方法你想使用选择器,就像这样。

- (NSComparisonResult)compare:(Person *)otherObject { 
    return [self.lastName compare:otherObject.lastName ]; 
} 

NSArray *sortedArray; 
sortedArray = [unSortedArray sortedArrayUsingSelector:@selector(compare:)]; 

这个Stackoverflow问题解释了可能使用的其他方法。

1

你想使用sortedArrayUsingComparator:代替:

array = [array sortedArrayUsingComparator: ^(id a, id b) { 
      NSString *first = [a objectForKey:@"lastName"]; 
      NSString *second = [b objectForKey:@"lastName"]; 
      return [first compare:second]; 
     }]; 

请注意,我不是在Mac上,现在,这是由手工输入,可能会有小的误差的

+0

这看起来像它可以为我工作,但我得到关于无法识别的选择器:(可能只是我的项目...同样的错误...谢谢:) – Julia

+0

这应该在数组上调用,而不是字符串属性 – vikingosegundo