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

Posted

技术标签:

【中文标题】从数组中检索索引,使用该索引在pickerview中选择一行【英文标题】:Retrieve an index from an array, use this index to select a row in 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'

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于从数组中检索索引,使用该索引在pickerview中选择一行的主要内容,如果未能解决你的问题,请参考以下文章

使用swiftyjson从索引对象数组ios中检索json的标题

从数组中检索单个数据

我可以像在 for 循环中从数组中索引项目一样从元组中检索项目吗?

仅使用索引检索多个数组的值

数组中的猫鼬查询,用于检索从索引 0 到 n 开始的元素,其中 n 是从最后一个元素开始的位置

从 MongoDb 集合中检索记录时,记录是不是根据为该集合设置的索引排序?