我有一个NSMutableArray
有三列,其中多行有浮点值,如下所示:
-0.06, -0.49, -0.76;
-1.05, -0.63, -0.77;
0.73, -0.32, -0.62;
-0.08, -0.61, -1.00;
0.15, -0.42, -0.91;
我用这一行来定义NSMutableArray
(anArrayAcel):
NSString *str = [NSString stringWithFormat:@"%@, %@, %@",self.accX.text,self.accY.text, self.accZ.text];
[anArrayAcel addObject:str];
我需要访问此数据以用于其他功能。如何通过特定索引访问值?
答案 0 :(得分:1)
看起来你需要一个数组数组。你做了一个NSString
的数组。
这是一种方法:
NSMutableArray *row = [
@[
[self.accX.text floatValue]
, [self.accY.text floatValue]
, [self.accZ.text floatValue]
]
mutableCopy
];
[anArrayAcel addObject:row];
我们的想法是创建一个NSMutableArray
的数组,大概是在一个事件处理程序中,在其中向行中添加行。如果您不需要嵌套数组是可变的,请跳过mutableCopy
部分。
现在您可以按如下方式访问您的数据:
float x = anArrayAcel[row][0];
float y = anArrayAcel[row][1];
float z = anArrayAcel[row][2];
注意:如果所有行都只包含三个值x
,y
和z
,那么最好创建一个代表三个float
的类而不是使用嵌套数组。
答案 1 :(得分:0)
你可以设计一个名为Acel的类,如下所示:
// Acel.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface Acel : NSObject
@property (nonatomic, assign) CGFloat accX;
@property (nonatomic, assign) CGFloat accY;
@property (nonatomic, assign) CGFloat accZ;
- (instancetype)initWithAccX:(CGFloat)accX accY:(CGFloat)accY accZ:(CGFloat)accZ;
@end
和.m如下:
// Acel.m
#import "Acel.h"
@implementation Acel
- (instancetype)initWithAccX:(CGFloat)accX accY:(CGFloat)accY accZ:(CGFloat)accZ{
self = [super init];
if (self) {
self.accX = accX;
self.accY = accY;
self.accZ = accZ;
}
return self;
}
@end
ViewController如下:
// ViewController.h
@interface ViewController ()
@property (nonatomic, strong) NSMutableArray *acels;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.acels = [@[] mutableCopy];
Acel *acel0 = [[Acel alloc] initWithAccX:-1.1f accY:0.2f accZ:0.3f];
Acel *acel1 = [[Acel alloc] initWithAccX:-1.1444f accY:0.22f accZ:0.33f];
Acel *acel2 = [[Acel alloc] initWithAccX:-1.1411f accY:0.255f accZ:0.333f];
[_acels addObject:acel0];
[_acels addObject:acel1];
[_acels addObject:acel2];
[self accessAccel1X];
}
- (void)accessAccel1X{
Acel * acel1 = self.acels[1];
NSLog(@"%f", acel1.accX);
}
在我看来,与二维数组相比,它更优雅。 因为我们不需要像[0] [1]那样做,如果你想迭代数组我们避免双循环,