Ios UIPickerview以选择员工和ID

Ios UIPickerview以选择员工和ID,ios,nsdictionary,uipickerview,Ios,Nsdictionary,Uipickerview,我有一本字典,里面有所有员工的ID和姓名。现在,我希望用户使用UIPickerView选择一个名称。问题是:如果我对字典的值(名称)进行排序,我如何知道哪个名称对应于它的ID,因为字典中可能有相同的名称 e、 g 因此,如果我用所有值对结果数组进行排序,并在UIPickerView中显示,然后选择第三行(Jane Doe),那么我如何才能获得其相应的ID?您可以获得如下所示的所选字典 NSDictionary *aDict = [yourArrayName objectAtIndex:[self

我有一本字典,里面有所有员工的ID和姓名。现在,我希望用户使用UIPickerView选择一个名称。问题是:如果我对字典的值(名称)进行排序,我如何知道哪个名称对应于它的ID,因为字典中可能有相同的名称

e、 g


因此,如果我用所有值对结果数组进行排序,并在UIPickerView中显示,然后选择第三行(Jane Doe),那么我如何才能获得其相应的ID?

您可以获得如下所示的所选字典

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

1-如果要对字典的值进行排序,请使用唯一名称构造字典值,就像对键进行排序一样

2-如果你有简单的字典,你不能做到这一点,让用户从3个字典中选择John Doe


3-如果在选取器中显示时存在值重复,请避免重复名称并显示一次。

而不是为名称和ID创建两个单独的数组,我创建了一个自定义对象“Person”,具有这两个属性(如iDev所建议的)。我创建了一个新的Person对象,并将每个对象添加到一个数组中

然后我使用

使用比较器进行排序:比较结果(id obj1,id obj2)

然后在titleForRow中,我返回此人的姓名:

((Person*)[mySortedArray objectAtIndex:row])姓名


具有名称的数组是有序的(在UIPicker中以升序显示名称)。那么,如果数组中有多个相同的名称,我如何从所选行获取ID?但是,如果名称相同,我如何将所选值映射到其ID?因为它只是一个字符串(不是员工记录),所以仅从选择器中获取名称我不理解。如果我想显示(例如在alertView中)Jane Doe的ID(第二个),UIPickerView中的该ID将是第三行,那么我该怎么做?这是一种错误的方法,因为你不应该使用值来查找键,那么我该怎么做?我希望用户按升序选择值,而不是键。
NSDictionary *aDict = [yourArrayName objectAtIndex:[self.yourPickerName selectedRowInComponent:0]];
NSLog(@"%@", aDict);