2012-02-04 68 views
0

我有一個可變的字符串數組。對於這個例子,假設它有2個字符串。如何更改NSMutableArray內的NSString的值?

我想要做的操作是取第一個字符串並將第二個字符串的值賦給它。

我是想這樣的事情:

- (void) someAction { 
    NSMutableArray * array = [[NSMutableArray alloc] initWithObjects: string1, string2, nil]; 
    NSString * firstString = [array objectAtIndex:0]; 
    NSString * secondString = [array objectAtIndex:1]; 
    firstString = secondString; 
} 

但這種方法似乎並不工作。在我記錄這兩個字符串之後,它們在操作之後不會改變。

請指教。

回答

7

你不能像這樣改變數組中的字符串。

該數組包含指向字符串的指針,當您將一個字符串分配給另一個字符串時,您只需交換指針,而不會更改數組指向的字符串對象。

你需要做的交換陣列中的字符串這是什麼:

- (void) someAction { 
    NSMutableArray * array = [[NSMutableArray alloc] initWithObjects: string1, string2, nil]; 
    NSString * secondString = [array objectAtIndex:1]; 
    [array replaceObjectAtIndex:0 withObject:secondString]; //replace first string with second string in the array 
} 
+0

要麼這要麼使琴絃也可變 – 2012-02-04 11:45:40

+1

是的,雖然使用NSMutableStrings與他也寫了我就不會了整整工作的代碼同樣的原因。你必須寫[string1 setString:string2]而不是string1 = string2。 – 2012-02-04 11:53:19

+0

夥計們,謝謝你的回覆。它似乎以這種方式工作。但是,我有一個問題。我在.m文件中聲明和創建的所有NSMutableStrings都正常工作,並顯示在NSLog中。但是,在.h文件中聲明的那些,不能正常工作,並且當我想在NSLog中檢查它們的值時,它們顯示爲(null)。 可能是什麼問題? – 2012-02-04 20:35:12