将数组展开为类

时间:2016-07-15 23:16:48

标签: objective-c arrays cocoa

我正在开发一个项目,我在其中读取设备生成的逗号分隔值文件。我无法控制文件,它可以包含10-20个命名参数,每个参数在一段时间内有数千个值。我计划将DataRecord与之后的时间相关联。也就是说,每次都会有一个与之关联的DataRecord。因此,在生成解析数据结构时,我的代码需要是动态的。我无法想办法解开我从原始数据文件解析的数组。这是一个例子。

@interface DataRecord : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSArray *values;
@end

NSArray *nameArray = [[NSArray alloc] initWithObjects:
                      @"Analog", @"Battery", nil];
NSArray *valueArray1 = [[NSArray alloc] initWithObjects:
                        [NSNumber numberWithFloat:1.0f],
                        [NSNumber numberWithFloat:2.0f],
                        nil];
NSArray *valueArray2 = [[NSArray alloc] initWithObjects:
                        [NSNumber numberWithFloat:1.1f],
                        [NSNumber numberWithFloat:2.1f],
                        nil];
NSArray *valueArray3 = [[NSArray alloc] initWithObjects:
                        [NSNumber numberWithFloat:1.2f],
                        [NSNumber numberWithFloat:2.2f],
                        nil];
NSArray *valueArray4 = [[NSArray alloc] initWithObjects:
                        [NSNumber numberWithFloat:1.3f],
                        [NSNumber numberWithFloat:2.3f],
                        nil];
NSArray *arrayOfArrays = [NSArray arrayWithObjects:valueArray1,
valueArray2, valueArray3, valueArray4,  nil];

我最终想要的是一系列数据记录,

DataRecord(0)
name: analog
values: (1.0, 1.1, 1.2, 1.3)

DataRecord(1)
name: battery
values: (2.0, 2.1, 2.2, 2.3)

也许我应该使用字典,结构,我不确定,追逐我的尾巴。

谢谢。

1 个答案:

答案 0 :(得分:0)

未测试:

NSMutableArray *dataRecords = [NSMutableArray new];
for (NSUInteger i = 0; i < [nameArray count]; i++)
{
    DataRecord *dr = [DataRecord new];
    dr.name = nameArray[i];
    NSMutableArray *values = [NSMutableArray new];
    for (NSArray *array in arrayOfArrays)
        [values addObject:array[i]];
    dr.values = values;
    [dataRecords addObject:dr];
}