我有一个枚举说性别,现在我想将它与字符串值相关联,以便在选择器视图中的视图中使用。它是可可触摸框架,而objective-c是语言。 所以我不知道如何将选择器视图的数据源设置为枚举,就像在其他框架中一样。所以我被告知我必须制作枚举值数组。然后我尝试将thos添加到NSMutableDictionary及其各自的字符串值。 所以我最终得到了
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]];
并且它没有工作说这不是一个有效的密钥,我已经阅读了密钥编码文章,我现在知道什么是关键和什么是关键路径,但我仍然可以解决这个问题。它毁了我的生命,请帮忙。
对不起伙计们,我正在使用NSDictionary来创建_genderDictionary。但是我在脑海中认为它是不可改变的。谢谢大家。
答案 0 :(得分:2)
小心使用UI文本作为数据库的键。当您需要将您的应用程序本地化为法语,中文,阿拉伯语等时需要多少金额?
答案 1 :(得分:0)
如果我理解正确,你会尝试创建一个预先填充的词典
您可以使用[NSDictionary dictionaryWithObjectsAndKeys:]
。
[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithUnsignedInt:0], @"Male",
[NSNumberWithUnsignedInt:1], @"Female", nil]
答案 2 :(得分: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() - ing _genderDictionary输出此
{
Female = 2;
Male = 1;
}
编辑:重新阅读你的问题,让我觉得你正在寻找的是UIPickerView的委托方法......实现–pickerView:titleForRow:forComponent:
是你设置选择器中出现的文本的地方。如果你有一个性别的NSArray,你会做类似return [_genderArray objectAtIndex:row];
这样的事情,你不需要乱用字典和键。
编辑2:选择器的数据源不能直接作为NSArray或NSDictionary。它必须是一个实现UIPickerView的数据源/委托协议的对象(我想你可以使用NSArray的子类,但那可能是cah-ray-zay!)。