Objective c 如何创建一组集合(18个集合,每个集合有5个独立的整数,全部压缩在一个集合中)

Objective c 如何创建一组集合(18个集合,每个集合有5个独立的整数,全部压缩在一个集合中),objective-c,set,nsset,Objective C,Set,Nsset,我将如何在Objective-C中编写以下内容?每个整数表示电机5的状态,顺时针1、关闭0、逆时针-1为状态。有18个序列,其中每个电机被告知以CW或CCW方向运行,或停止运行 {{1,0,0,0,0}, {0,0,-1,0,0}, {0,1,0,1,0}, // etc. for another 15 sets } 两个问题: 我只想读取这些值…我应该使用NSSet吗? 我会把整数写成对象吗?等等@1或者我可以将它们保留为整数吗 如果我想在集合中添加一个已知的时间戳,这会改变集合的标识

我将如何在Objective-C中编写以下内容?每个整数表示电机5的状态,顺时针1、关闭0、逆时针-1为状态。有18个序列,其中每个电机被告知以CW或CCW方向运行,或停止运行

{{1,0,0,0,0},
 {0,0,-1,0,0},
 {0,1,0,1,0},
 // etc. for another 15 sets
}
两个问题:

我只想读取这些值…我应该使用NSSet吗? 我会把整数写成对象吗?等等@1或者我可以将它们保留为整数吗 如果我想在集合中添加一个已知的时间戳,这会改变集合的标识吗?也就是说,它不再是基于整数的集合了?例:第一个时间戳是0.3秒。
如果您需要更多信息,请告诉我。谢谢

我们可以直接在数组中添加整数值。 并且可以使用intvalue访问值

arrMotorStates=[[NSMutableArray alloc] init];
NSMutableArray *arr1=[[NSMutableArray alloc]initWithObjects:@1,@0,@0,@0,@0, nil];
NSMutableArray *arr2=[[NSMutableArray alloc]initWithObjects:@0,@0,@-1,@0,@0, nil];
[arr1 addObject:@5];
[arrMotorStates addObject:arr1];
[arrMotorStates addObject:arr2];
NSLog(@"%d",[arrMotorStates[1][2] intValue]);

正如所指出的,由于两个原因,您不能使用集合来组织这一过程。首先,集合只包含唯一的值,并且集合具有重复的值。第二,集合无序;集合中的值具有顺序

阵列将是最简单的解决方案。在现代Obj-C中,可以在运行时声明和构建不可变的只读数组。因为数组是一个对象,所以可以构建数组的数组

声明:

NSArray<NSArray<NSNumber*>*>* motorState = @[ @[ @1, @0, @0,  @0, @0 ],
                                              @[ @0, @0, @-1, @0, @0 ],
                                              @[ @0, @1, @0,  @1, @0 ] ];

唯一的缺点是香草基数组只能存储对象引用,所以每个值都被编码为NStUnt。

参见静态对象无序集合的唯一对象。电机的数量是否始终为5?时间戳是日期还是秒数?很好,很好的开始。电机的数量总是5个,是的。时间戳是秒数,每个序列始终不同,但每个序列在前一个序列完成后运行。
// get value of row 1, column 3
NSInteger state = motorState[1][3].integerValue;