【问题标题】:Retrieve an index from an array, use this index to select a row in pickerview从数组中检索索引,使用该索引在pickerview中选择一行
【发布时间】:2013-11-07 14:12:22
【问题描述】:

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

我想做的是,当视图出现时,抓取笔记的类别属性,在我的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 简单笔记 1[14351:a0b] tmpstring:第二类 2013-11-07 14:09:25.395 简单笔记 1[14351:a0b] 猫数组:( “(实体:类别;id:0x89f1770;数据:)”, “(实体:类别;id:0x89d9230;数据:)”, “(实体:类别;id:0x8968420;数据:)”, “(实体:类别;id:0x8968430;数据:)”, “(实体:类别;ID:0x89cdc10;数据:)” ) 2013-11-07 14:09:25.404 简单注释 1[14351:a0b] *** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“***-[NSMutableIndexSet addIndexesInRange:]: Range {2147483647, 1}超过 NSNotFound 的最大索引值 - 1'

所以我知道我正在寻找的字符串没问题,我的数组也不是空的,但我不知道为什么我找不到正确的索引?有什么建议吗?谢谢。

【问题讨论】:

    标签: core-data uipickerview


    【解决方案1】:

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

    这个:

    NSInteger indexOfTheObject = [catArray indexOfObject:tmpString];
    

    本质上是这样的:

    NSInteger indexOfTheObject = [NSManagedObjects indexOfObject:NSString];
    

    您需要搜索NSManagedObjects (catArray) 的数组并将属性与tmpString 进行比较以找到索引。

    伪代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2017-08-27
      • 2021-07-27
      • 2017-05-30
      相关资源
      最近更新 更多