2010-09-09 86 views
1

我有幾十個NSStrimgs,當應用程序加載時,我希望全部設置爲相同的設置。他們全部。我怎樣才能做到這一點,而無需輸入每一個?有沒有捷徑的方法?將多個變量設置爲相同的值

謝謝。

+0

這似乎是一個奇怪的要求。這不是通常所做的事情,所以不可能有捷徑。你爲什麼要這樣?你想達到什麼目的? – Chuck 2010-09-09 17:54:34

+0

所有這些字符串分配或初始化在哪裏?如果你把它們都放在一個NSArray中,那麼你可以循環訪問數組來完成初始化。 – hotpaw2 2010-09-09 18:45:13

回答

3

另外的問題是,約什不夠具體瞭解他是如何用他的幾十串的......我認爲這將是更好的:

NSMutableArray *stringsArray = [NSMutableArray arrayWithCapacity:1]; 
NSString *tempStr = @"My unique string"; // Thanks Sven! 

// Say you want a dozen strings 
for (int i = 0; i < 12; i ++) { 

    [stringsArray addObject:tempStr]; 
} 

// Now you can use them by accessing the array 
[self doSomethingWithString:[stringsArray objectAtIndex:8]]; 
+0

你應該在循環之外初始化'tempStr'。 – Sven 2010-09-09 21:30:12

1

而不是有幾十個具有相同值的字符串,你可以做一個單一的靜態全局字符串和引用?如果以後需要將其更改爲獨立值,請使用初始化爲全局字符串的實例變量。

+0

你能擴展嗎?是的,每個價值都會在某個時候改變。 – 2010-09-09 17:47:54

0

如果值是已知的,當你編譯代碼並且在隨後的應用程序會話之後它不會改變,那麼你可以使用一個簡單的#define。

#define MY_DEFAULT_STRING @"THE DEFAULT STRING" 

現在您只需要做以下操作。

{ 
    NSString *myString1 = MY_DEFAULT_STRING; 
    NSString *myString2 = MY_DEFAULT_STRING; 
    .... 
    NSString *myStringN = MY_DEFAULT_STRING; 
} 

如果所有的字符串都在同一個代碼文件中,只需將define放在頂部即可。如果字符串在單獨的代碼文件中,那麼它可以被放到你的預編譯頭文件中。有一個常量文件通常更好。

使用常量extern NSString可能會更正確,但這很簡單並且容易。

1

這聽起來像你的模型不是很好。既然你想將所有的字符串初始化爲相同的值,它們顯然是相關的,可能應該像iPhoneDevProf所描述的那樣將數組建模。這使得其他事情也變得更加容易,您可以將其他代碼重複用於每個字符串循環。