2014-02-28 63 views
0

上的保存按鈕touch up inside,下面的代碼被執行:如何動態創建一些NSMutableArray(s)?

- (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中。

+0

簡單,你需要使用循環,並把喲你的代碼裏面:) – iPatel

+0

製作二維數組,可以解決你的問題我認爲 –

+0

@iPatel也許我沒有說清楚,我不希望這種方法每次我打電話時都創建一些數組。看,當我第一次點擊保存時,用戶的信息存儲在'myArray1'中。現在,'savecount'被調用(比如savecount = 2)。當我輸入另一個用戶的詳細信息並點擊保存時,我不希望'myArray1'被覆蓋或被打擾;第二個用戶的詳細信息必須獨立保存在'myArray2'中。 – motox

回答

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對象。

+0

檢查編輯。我很困惑,如果你的答案將完成任務 – motox

+0

你想保留user1的價值,同時保存user2的細節,那麼你必須要保存以前的數組給一些數據持有人說數組,字典等。如果你實現了上面的代碼,並且你想訪問user1的細節,你可以用[holder objectAtIndex:0]來完成,並從那裏訪問數組元素。 –

+0

完美!謝謝 – motox

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]

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];