ios - 通过循环对 NSArray 进行分组?

标签 ios objective-c arrays sorting

我正在尝试隔离数组中的元素。我有一个包含超过 100000 个 NSNumber 对象的 NSArray。我遇到的问题是它们按 3 的增量排列。

processarray = [[NSMutableArray alloc] init];

for (loopstart = 0; loopstart < arraycount; loopstart ++)

{
    arrayvalue = [[mesharray objectAtIndex: loopstart] floatValue];
    coordinate = [NSNumber numberWithFloat: arrayvalue];
    [processarray addObject: coordinate];
    [printgcodetoconsole appendFormat: @"\nCOORDINATE: %@", coordinate];

}

例如,我的数组如下所示:

  • 坐标:5567
  • 坐标:1065
  • 坐标:1564
  • 坐标:3432
  • 坐标:6123
  • 坐标:9345
  • 坐标:1856
  • 坐标:2765
  • 坐标:1998
  • 坐标:9087
  • 坐标:2234
  • 坐标:5467

我需要的是一种根据 X、Y 和 Z 将正确值分组在一起的方法,因为它们是空间中的点,例如:

  • 新数组对象:(X5567、Y1065、Z1564)

等等……

数组中的对象除了都是 NSNumber 对象之外没有任何相似之处。

提前致谢!

我目前正在 NSTextView 中将此数组打印为字符串,但我不知道如何隔离字符串而不用此代码搞乱循环:

[printgcodetoconsole appendFormat: @"\nCOORDINATE: %@", coordinate];

我真的更喜欢类似的东西:

NSNumber * X;
NSNumber * Y;
NSNumber * Z;

[printgcodetoconsole appendFormat: @"\n X%@, Y%@, Z%@", X, Y, Z];

最佳答案

您应该检查计数器 loopstart 何时为 3 的倍数,并将最后 3 个值分组到子数组中:

NSMutableArray *subArray = [NSMutableArray array];
for (loopstart = 0; loopstart < arraycount; loopstart ++) {
    arrayvalue = [[mesharray objectAtIndex:loopstart] floatValue];
    coordinate = [NSNumber numberWithFloat: arrayvalue];
    [subArray addObject:coordinate];
    if (loopstart % 3 == 0) {
        [processarray addObject:subArray];
        subArray = [NSMutableArray array];
    }
}

关于ios - 通过循环对 NSArray 进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19553143/

相关文章:

ios - Swift - 设置位置

ios - 快速将文本字段传递给第二个 View Controller 中的标签

objective-c - 在混合 objc/swift 模块中,Xcode 总是尝试包含模块本身

javascript - JS Array NEQ 操作的最佳性能操作

ios - 如何解析 uitextfield 以发送 soap 调用?

ios - Alamofire 请求错误 : NSURLErrorDomain Code -1005 The network connection was lost

ios - 如何符合定义具有相同名称和不同签名的方法的两个协议(protocol)?

ios - 如何在 AFNetworking 2.0 中使用 Progress 参数

java - 检查字符串数组是否包含没有循环的子字符串

java - 如何在 Hangman 游戏中使用 3D 数组?