2010-11-25 74 views
0

我有一個枚舉說性別,現在我想將它關聯到字符串值在視圖內使用一個選擇器視圖。這是可可觸摸框架和Objective-C語言。 所以我不知道如何設置選擇器視圖的數據源作爲枚舉,就像在其他框架中可以做到的那樣。所以我被告知我必須製作枚舉值數組。然後我試圖用它們各自的字符串值將thos添加到NSMutableDictionary中。 所以我結束了objective-c如何創建一個枚舉數組作爲鍵的字符串值?

NSArray* genderKeys = [NSArray arrayWithObjects:@"Male",@"Female",nil] ; 
NSArray* genderValues = [NSArray arrayWithObjects:[NSNumber numberWithInt:male],[NSNumber numberWithInt:female],nil]; 

for(int i =0;i<[genderKeys count];i++) 
    [_genderDictionary setValue:[genderValues objectAtIndex:i] forKey:[genderKeys objectAtIndex:i]]; 

和它不工作說這是不是一個有效的關鍵,我讀過的關鍵編碼的文章,我知道現在什麼是關鍵和最新的keyPath,但還是我該如何解決那。這毀了我的生活,請幫助。

對不起,我使用NSDictionary for _genderDictionary.But我在腦海中,它是nsmutable。謝謝你們。

回答

0

這對我很有用。運行這個(你的代碼,添加第一行以便編譯)似乎工作正常。

NSMutableDictionary *_genderDictionary = [NSMutableDictionary dictionary]; 
NSArray* genderKeys = [NSArray arrayWithObjects:@"Male",@"Female",nil] ; 
NSArray* genderValues = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],nil]; 

for(int i =0;i<[genderKeys count];i++) 
    [_genderDictionary setValue:[genderValues objectAtIndex:i] forKey:[genderKeys objectAtIndex:i]]; 

的NSLog() - 荷蘭國際集團_genderDictionary輸出該

{ 
    Female = 2; 
    Male = 1; 
} 

編輯:重新閱讀你的問題,讓我知道你在尋找的是UIPickerView的委託方法...實施–pickerView:titleForRow:forComponent:是您可以在其中設置出現在選取器中的文字。如果你有一個性別的NSArray,你會做一些像return [_genderArray objectAtIndex:row];這樣你就不需要用字典和鍵盤大驚小怪了。

編輯2:picker的數據源不能直接作爲NSArray或NSDictionary。它必須是一個實現UIPickerView的數據源/委託協議的對象(我想你可以用NSArray的一個子類來完成,但那會是cah-ray-zay!)。

0

如果我正確理解你,你嘗試創建一個預先填充的字典。
您可以使用[NSDictionary dictionaryWithObjectsAndKeys:]

[NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithUnsignedInt:0], @"Male", 
    [NSNumberWithUnsignedInt:1], @"Female", nil] 
2

小心使用UI文本作爲數據庫中的鍵。當您需要將您的應用程序本地化爲法語,中文,阿拉伯語等時,需要多少金額?

+1

字典鍵不應該是暴露給用戶的東西。不是因爲語言問題,而是因爲它是低音吶喊。關鍵是你用來檢索數據,而不是數據本身。 – 2010-11-25 12:41:38

相關問題