我正在尝试隔离数组中的元素。我有一个包含超过 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/