LPPloveROU 2013-01-21 02:39 采纳率: 50%
浏览 3582
已采纳

NSMutableArray对象的索引

NSMutableArray 中的对象是这样: “0,1,0,1,1,1,0,0”

然后我要获取所有值为“ 1 ”的对象的索引。

for (NSString *substr in activeItems){
            if ([substr isEqualToString:@"1"]){
                NSLog(@"%u",[activeItems indexOfObject:substr]);   
            }
    }

但是根据文档说明中方法indexOfObject是返回最低索引值,那么我应该怎么获取值为 “1” 的对象索引呢?

  • 写回答

1条回答 默认 最新

  • Matt 2013-01-21 17:04
    关注

    这个可以通过设置range来解决.

    NSRange range = NSMakeRange(0, activeItems.count);
    for (NSString *substr in activeItems)
    {
        if ([substr isEqualToString:@"1"])
        {
            NSInteger index = [activeItems indexOfObject:substr inRange:range];
            NSLog(@"the object indix is: %d", index);
            range.location = ++index;
            range.length = activeItems.count - index;
        }
    }
    

    当然,这种对collection的过滤操作,我建议用NSPredicate.不过你这个过滤也不算复杂,怎样都行.
    不过我还是给你写出来方法.

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '1'"];
    NSArray *resAry = [activeItems filteredArrayUsingPredicate:predicate];
    NSRange range = NSMakeRange(0, activeItems.count);
    
    for (NSString *substr in resAry)
    {
        NSInteger index = [activeItems indexOfObject:substr inRange:range];
        NSLog(@"the object indix is: %d", index);
        range.location = ++index;
        range.length = activeItems.count - index;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊