Objective c 在NSMutableArray中对视图进行排序

Objective c 在NSMutableArray中对视图进行排序,objective-c,random,nsmutablearray,sorting,Objective C,Random,Nsmutablearray,Sorting,我正在使用NSMutableArray获取特定superView的所有子视图,一切正常,但日志显示: superView contains ( "<UIView: 0x68795c0; frame = (20 172; 238 115); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x689aad0>>", "<UIView: 0x6e67d90; frame = (143 295; 115 1

我正在使用NSMutableArray获取特定superView的所有子视图,一切正常,但日志显示:

superView contains (
"<UIView: 0x68795c0; frame = (20 172; 238 115); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x689aad0>>",
"<UIView: 0x6e67d90; frame = (143 295; 115 115); autoresize = W+H; layer = <CALayer: 0x6e67dc0>>",
"<UIView: 0x6e6f1a0; frame = (20 49; 115 115); autoresize = W+H; layer = <CALayer: 0x6e6e830>>",
"<UIView: 0x6e6fac0; frame = (143 49; 115 115); autoresize = W+H; layer = <CALayer: 0x6e6faf0>>"
)
superView包含(
"",
"",
"",
""
)
如您所见,视图似乎是随机加载到数组中的,但对我来说,重要的是它们是按顺序加载的,因此它从superview的顶部到底部加载视图。所以它应该是这样的:

superView contains (
"<UIView: 0x6e6f1a0; frame = (20 49; 115 115); autoresize = W+H; layer = <CALayer: 0x6e6e830>>",
"<UIView: 0x6e6fac0; frame = (143 49; 115 115); autoresize = W+H; layer = <CALayer: 0x6e6faf0>>"
"<UIView: 0x68795c0; frame = (20 172; 238 115); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x689aad0>>",
"<UIView: 0x6e67d90; frame = (143 295; 115 115); autoresize = W+H; layer = <CALayer: 0x6e67dc0>>",
)
superView包含(
"",
""
"",
"",
)

有人能给我一些建议吗?

NSArray有多种排序方法;它们通常包含一个附加函数或方法,该函数或方法将一个对象作为参数,并返回一种类型的
NSComparisonResult
。从文档中:

标识用于比较两个元素的方法的选择器 一次。如果 接收数组小于参数,
sensorderedescending
if 接收数组大于参数,如果 他们是平等的


您可以指定实际的比较参数。

您认为应该“按顺序”加载它们是什么意思?您需要根据哪个属性或键进行排序?@Carter很抱歉,这里的“顺序”是指数组应该从屏幕的顶部到底部加载这些视图,例如,x坐标为0的视图排在第一位,480的视图排在最后。下面的答案描述了如何对数组进行排序,但是这里需要注意的一点是,
子视图
不是随机的。它是z顺序的,这是绘图的顺序,以便视图正确堆叠。你所要求的是y-顺序,这可能对你的目的有用,但对绘画来说毫无意义。