美好的一天,
我正在开发一个涉及使用UIPickerview的程序。这工作正常但是,我没有在我的ViewdidLoad中设置数组,而是从我的webserverice下载它并将其保存到我的数组中。似乎工作正常,但在titleforRow
上调用return _pickerData[row];
会出错。 [__NSCFString count]: unrecognized selector
我不知道为什么,在我看来,我错误地将值分配给_pickerData但是,我尝试的所有已知方法都失败了
如果我能得到一些帮助,我想。
谢谢
这是我的代码。
-(void)getMyItems:(NSArray *)items
{
/* This works
_pickerData = @[@"test"];
[_uiPickerController reloadAllComponents];
*/
/* This doesnt work
_pickerData = items;
[_uiPickerController reloadAllComponents];
*/
for(int i=0;i<[items count];i++)
{
Details*bObject = [items objectAtIndex:i];
if(bObject)
{
NSLog(@"list%@",[[items objectAtIndex:i]valueForKey:@"name"]);// This list all items in my array
_pickerData=[[items objectAtIndex:i]valueForKey:@"name"];//but it is not getting assigned to _pickData Array
}
}
[_uiPickerController reloadAllComponents]; //This gives error when run uncommented.
}
更新 - ITEMS ARRAY
for (int i = 0; i < jsonArray.count; i++)
{
NSDictionary *jsonElement = jsonArray[i];
Details*downloadobject = [[Detailsalloc] init];
downloadobject .name = jsonElement[@"name"];
[_transferArray addObject:downloadobject ]; (transfer array is an array
}
if (self.delegate)
{
[self.delegate getMyItems:_transferArray ];
}
NSlog显示
2014-09-28 01:07:05.002 progb[5647:a0b] list catapid
2014-09-28 01:07:05.002 progb[5647:a0b] list metaphod
2014-09-28 01:07:05.002 progb[5647:a0b] list butterfree
2014-09-28 01:07:05.002 progb[5647:a0b] list beedrill
2014-09-28 01:07:05.002 progb[5647:a0b] list genesect
2014-09-28 01:07:05.002 progb[5647:a0b] list nincada
2014-09-28 01:07:05.003 progb[5647:a0b] list ledian
2014-09-28 01:07:05.003 progb[5647:a0b] list dustox
2014-09-28 01:07:05.003 progb[5647:a0b] list shuckle
答案 0 :(得分:0)
您定义阵列的方式不正确。你将它定义为[[items objectAtIndex:i] valueForKey:@&#34; name&#34;]我猜测它是一个字符串,并且在每次通过for循环时,你重新定义它另一个字符串。因此,当您的循环退出时,_pickerData将包含最后一个字符串,而不是数组。你应该使_pickerData成为一个可变数组,在循环外实例化它,然后在for循环中为它添加对象。
_pickerData = [NSMutableArray new];
for(Details *bObject in _items) {
[_pickerData addObject: [bObject valueForKey:@"name"]]; // You should be able to use bObject.name here instead of using valueForKey: if you import Details.h into this class
}