2014-08-27 63 views
0

我有一本包含所有僱員身份證及其名稱的字典。現在我想讓用戶使用UIPickerView選擇一個名稱。問題是:如果我對字典的值(名稱)進行排序,我怎麼知道哪個名稱對應於它的ID,因爲字典中可能有相同的名稱。UIPickerview選擇僱員和身份證

例如

{"0001", "John Doe"} 
{"0002", "John Doe"} 
{"0003", "Jane Doe"} 
{"0004", "Jane Alpha"} 
{"0005", "Jane Doe"} 

所以,如果我所有的值所產生的數組進行排序,並在UIPickerView顯示這一點,並選擇第三個行(李四),我怎麼能那麼獲得其相應的ID?

回答

0

而不是創建兩個單獨的陣列的名稱和ID我創建(由iDev建議)一個自定義對象'人'與這兩個屬性。我創建了一個新的Person對象並將其添加到數組中。

然後我排序利用

sortedArrayUsingComparator該數組:^ NSComparisonResult(ID OBJ1,ID OBJ2)

然後在titleForRow我回到了人的名字:

((Person *)[mySortedArray objectAtIndex:row])。Name;

0

可以得到選擇詞典作爲波紋管

NSDictionary *aDict = [yourArrayName objectAtIndex:[self.yourPickerName selectedRowInComponent:0]]; 
NSLog(@"%@", aDict); 
+0

命名的數組已被排序(以在UIPicker中以升序顯示名稱)。那麼如果數組中有多個相同的名稱,我如何從選定的行中獲取ID? – DanielR 2014-08-27 13:22:45

1

1如果你想字典的值,你用獨特的名字構建你的字典中的值,如果你的鑰匙做排序。

2 - 如果你不能夠做​​到這一點的情況下,你有你的簡單的字典,讓用戶選擇李四出3

3-如果選擇器顯示時,有重複的值你避免重複名稱並顯示一次。

+0

但如何將名稱相同的選定值映射到其ID? – DanielR 2014-08-27 13:37:45

+0

,因爲它只是一個字符串(不是員工記錄),只需將名稱單獨作爲選擇器 – Rajesh 2014-08-27 13:42:43

+0

我不理解這一點。如果我想顯示(例如在alertView中)Jane Doe(第二個)的ID在UIPickerView中是第三行,那麼我該怎麼做? – DanielR 2014-08-27 13:55:22