兩個問題:如何使字符串數組
第一個問題:
我要作出這樣的字符串數組:
地區[1] =挪威; 資本[1] =奧斯陸;
國家[2] =德國; 首都[2] =柏林;
我怎樣寫代碼?這應該很簡單,但我不明白我見過的任何解釋。我想我想用一個NSArray,因爲我不想改變它們! 我想主要的問題是我怎麼聲明此陣!
第二個問題:
我能資本[2]在一個按鈕上的文字使用的例子嗎?這就像一個測驗,如果國家[2]是特定的國家,我希望這是一個選項。
/一個小白
兩個問題:如何使字符串數組
第一個問題:
我要作出這樣的字符串數組:
地區[1] =挪威; 資本[1] =奧斯陸;
國家[2] =德國; 首都[2] =柏林;
我怎樣寫代碼?這應該很簡單,但我不明白我見過的任何解釋。我想我想用一個NSArray,因爲我不想改變它們! 我想主要的問題是我怎麼聲明此陣!
第二個問題:
我能資本[2]在一個按鈕上的文字使用的例子嗎?這就像一個測驗,如果國家[2]是特定的國家,我希望這是一個選項。
/一個小白
最簡單的方式來聲明NSArray
中的OBJ-c是這樣的:
NSArray *Countries = @[@"Norway", @"Germany"];
NSArray *Capitals = @[@"Oslo", @"Berlin"];
然後,您可以訪問這些指標以後使用[]
符號:
[myButton setTitle:Capitals[1] forState:UIControlStateNormal];
個
記住陣列的編程語言0索引!這意味着第一個元素的索引爲0,第二個是指數1等等
這段代碼不會編譯。您應該調用'[UIButton setTitle:forState:]'方法。 UIButton沒有名爲'title'的屬性。 –
我總是忘了,而且是永遠的痛的屁股當我嘗試以編程方式更改我的按鈕 –
先回答
鑑於你的例子,你可以用數組文本實現它:
NSArray* countries = @[@"Norway", @"Germany"];
NSArray* capitals = @[@"Oslo", @"Berlin"];
但是,在省會城市都從國家脫鉤,有他們可能會不同步的可能性。一個更好的表現將是一個數組的詞典:
NSArray* countries = @[@{@"name":@"Norway", @"capital":@"Oslo"},
@{@"name":@"Germany", @"capital":@"Berlin"}];
第二個答案
當然可以!假設你已經在屏幕上的UIButton,通過屬性button
訪問。與原來的陣列,德國,你會使用:
[self.button setTitle:capitals[1] forState: UIControlStateNormal];
對於字典,你會使用:
NSDictionary* selectedCountry = countries[1];
NSString* country = selectedCountry[@"name"];
NSString* capital = selectedCountry[@"capital"];
[self.button setTitle:capital forState:UIControlStateNormal];
NSArray *country = @[@"Norway", @"Germany"];
NSArray *capital = @[@"Oslo", @"Berlin"];
NSString *capitalOfGermany = capital[1];
berlinButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[berlinButton setTitle:capitalOfGermany forState:UIControlStateNormal];
berlinButton.frame = CGRectMake(120, 200, 80, 20);
[self addSubview:berlinButton];
這不是你想要一個字符串數組,這是字典的數組:
NSArray *countryArray = @[ @{@"Country" : @"Norway", @"Capital" : @"Oslo"},
@{@"Country" : @"Germany", @"Capital" : @"Berlin"} ];
編輯我糾正變量聲明。
[閱讀文檔。他們解釋一切(https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Collections.html#//apple_ref/doc/uid/10000034i)。 – sosborn
記憶痕跡是基於0的,所以它會是0,1;不是1,2. – WDUK