Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用自定义类的实例对数组进行排序_Iphone_Objective C_Arrays_Sorting - Fatal编程技术网

Iphone 使用自定义类的实例对数组进行排序

Iphone 使用自定义类的实例对数组进行排序,iphone,objective-c,arrays,sorting,Iphone,Objective C,Arrays,Sorting,我有一个数组,其中填充了一个自定义类的实例,该类包含两个字符串属性:firstname和lastname。两者都有一个getter方法,该方法等于属性本身的名称。还有一种方法用于检索名为“getFullName”的人的全名。考虑下面的例子。 CustomClass *person = [[CustomClass alloc] ...]; person.firstname // Returns "Thomas" person.lastname // Returns "Meier" [pe

我有一个数组,其中填充了一个自定义类的实例,该类包含两个字符串属性:firstname和lastname。两者都有一个getter方法,该方法等于属性本身的名称。还有一种方法用于检索名为“getFullName”的人的全名。考虑下面的例子。

 CustomClass *person = [[CustomClass alloc] ...];
 person.firstname  // Returns "Thomas"
 person.lastname // Returns "Meier"
 [person getFullName] // Returns "Thomas Meier"
现在我想按全名降序排列这个数组。我一直在研究一些数组排序方法,但不太清楚如何进行。我想我必须创建某种比较函数来比较两个元素,但是我如何告诉SDK哪些值要传递给这个方法,以及应该将它放在哪里(在自定义类中还是在排序发生的类中?)。也许还有另一种/更好的方法?诚然,我几乎没有排序数组的经验

非常感谢你的帮助


另外,代码应该在iOS 3.2上运行。有几种方法可以实现这一点。一种是在自定义类上放置一个比较方法。称之为
-比较:
或类似的东西。该方法应采用另一个具有相同自定义类型的对象作为其输入。根据比较的结果,它应该返回
sensorderedescing
sensorderedescing
sensorderedsame
。(在此比较函数中,您可以查看自己的全名与传入对象的全名。)

然后可以使用
NSMutableArray
的方法,如下所示:

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

这适用于所有版本的iOS。4.0+中提供了块比较方法。

检查一下:别问我为什么,但当我读到你的帖子时,我才意识到这个系统是如何工作的:)太棒了,现在这些东西有意义了。谢谢!我认为作为对我的问题的评论发布的链接是创建一个单独的自定义方法的快捷方式,但是你的帖子当然也可以。