如何动态创建一些NSMutableArray?

时间:2014-02-28 05:15:32

标签: ios objective-c nsmutablearray nsarray

在SAVE按钮的touch up inside上,执行以下代码:

- (IBAction)onSave:(id)sender {

    savecount++;
    [self saveNumberOfContacts];

    NSMutableArray *myArray = [[NSMutableArray alloc] init];
    [myArray addObject:nameTextField.text];
    [myArray addObject:phoneTextField.text];
    [myArray addObject:addressTextField.text];
    [myArray addObject:cityTextField.text];
    [myArray addObject:stateTextField.text];
    [myArray addObject:zipcodeTextField.text];

    [myArray writeToFile:[self saveFilePath] atomically:YES];
}

这会创建一个数组。我想知道如何动态创建多个数组,并在数组名称的末尾加上savecount变量。

例如,如果我的savecount为3,则应创建myArray1,myArray2,myArray3。

P.S。 savecount动态更改其值。

编辑:我不希望这种方法每次调用它时都会创建一些数组。请注意,当我第一次单击“保存”时,用户的信息存储在myArray1中。现在,savecount被取消(例如,savecount = 2)。当我输入其他用户的详细信息并单击“保存”时,我不希望myArray1被覆盖或打扰;第二个用户的详细信息必须单独保存在myArray2

3 个答案:

答案 0 :(得分:2)

NSMutableArray *holder;

- (void)viewDidLoad
{
    holder = [[NSMutableArray alloc] init];
}
- (IBAction)onSave:(id)sender {

    savecount++;
    [self saveNumberOfContacts];

    NSMutableArray *myArray = [[NSMutableArray alloc] init];
    [myArray addObject:nameTextField.text];
    [myArray addObject:phoneTextField.text];
    [myArray addObject:addressTextField.text];
    [myArray addObject:cityTextField.text];
    [myArray addObject:stateTextField.text];
    [myArray addObject:zipcodeTextField.text];

    [myArray writeToFile:[self saveFilePath] atomically:YES];

    [holder addObject:myArray];
}

有一个全局数组,您可以在其中保存动态创建的数组。现在,当您从holder获得价值时,您将分隔myArray个对象。

答案 1 :(得分:1)

如果您只在一个方法中使用这些数组,则可以将数组存储在数组中。这不会为您提供诸如myArray1,myArray2等数组名称,但可以完成相同的整体任务。这是一个例子:

NSMutableArray *myArrays = [[NSMutableArray alloc] initWithCapacity:savecount];
for (NSUInteger i = 0; i < savecount; i++) {
    NSMutableArray *newArray = [[NSMutableArray alloc] init];
    [myArrays addObject:newArray];
    [newArray addObject:nameTextField.text];
    // continue adding your objects to newArray
}

现在,您可以将数组引用为[myArrays objectAtIndex:0] ... [myArrays objectAtIndex:savecount-1]

答案 2 :(得分:0)

我认为您的问题是保存路径,或者是附加数组数据的相同路径。

如果将数据保存到不同的路径:

- (NSString*)saveFilePath{
    return [NSString stringWithFormat:@"%@/%@%d.%@", thePathToSave, fileName, savecount, fileType];
}

如果使用附加的数组数据保存到相同的路径:

替换:

[myArray writeToFile:[self saveFilePath] atomically:YES];

NSArray *fileData = [NSArray arrayWithContentsOfFile:[self saveFilePath]];
NSMutableArray *preDatas = nil;
if (preDatas.count == 0) {
    preDatas = [NSMutableArray array];
}
else{
    preDatas = [NSMutableArray arrayWithArray:fileData];
}
[preDatas addObject:myArray];
[preDatas writeToFile:[self saveFilePath] atomically:YES];