从数组中检索索引,使用此索引在pickerview中选择一行

时间:2013-11-07 14:12:23

标签: core-data uipickerview

我有一个数组(catArray),来自核心数据获取。我正在使用此数组来填充我的pickerview(categoryPicker)。此外,我在视图出现时加载了一个注释,此注释(来自核心数据)也有一个“category”属性,它与catArray的一个类别匹配。

我想要做的是,当视图出现时,抓取音符的category属性,在catArray中搜索字符串结果,获取索引,并为pickerview选择正确的行。这是我的代码:

- (void)viewDidLoad
{

    Notes *editNote = (Notes *)[noteArray objectAtIndex:0];
    NSString *tmpString = [editNote category];

    NSLog(@"tmpstring : %@", tmpString);
    NSLog(@"cat array : %@", catArray);


    NSInteger indexOfTheObject = [catArray indexOfObject:tmpString];

    [categoryPicker selectRow:indexOfTheObject inComponent:0 animated:YES];

}

以下是日志结果:

2013-11-07 14:09:25.393 Simple Notes 1[14351:a0b] tmpstring : category two
2013-11-07 14:09:25.395 Simple Notes 1[14351:a0b] cat array : (
    " (entity: Categories; id: 0x89f1770  ; data: )",
    " (entity: Categories; id: 0x89d9230  ; data: )",
    " (entity: Categories; id: 0x8968420  ; data: )",
    " (entity: Categories; id: 0x8968430  ; data: )",
    " (entity: Categories; id: 0x89cdc10  ; data: )"
)
2013-11-07 14:09:25.404 Simple Notes 1[14351:a0b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableIndexSet addIndexesInRange:]: Range {2147483647, 1} exceeds maximum index value of NSNotFound - 1'

所以我知道我正在寻找的字符串是好的,我的数组也不是空的,但我无法弄清楚为什么我找不到合适的索引?有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您的catArray是一个NSManagedObjects数组,而tmpString是NSString

此:

NSInteger indexOfTheObject = [catArray indexOfObject:tmpString];

基本上是这样的:

NSInteger indexOfTheObject = [NSManagedObjects indexOfObject:NSString];

您需要搜索NSManagedObjectscatArray)数组并将属性与tmpString进行比较以查找索引。

伪代码:

for each Categories in catArray
    if Categories.name == tmpString
        save the index