UIPicker TitleforRow出错

时间:2014-09-28 04:27:16

标签: ios uipickerview

美好的一天, 我正在开发一个涉及使用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

1 个答案:

答案 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
}