当for循环从NSArray到达NSNotFound时如何中断

wag*_*shi 2 for-loop objective-c ios

我有一个nsmutablearray,我在nsarray的for循环中添加了对象.我希望它添加对象,直到它到达NSNotFoundindexOfObject:来自NSArray.该数组位于for循环内,以从每个索引中提取字符串.

我的代码:

NSInteger untilNotFound = NSNotFound;
NSUInteger index = [array indexOfObject:string];

for (index; index < untilNotFound; index ++)
{           
    [self.mutablearray addObject:[array objectAtIndex: index]];
}
Run Code Online (Sandbox Code Playgroud)

编辑:

for (string in array)
{
NSComparisonResult *result = [string compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) 
                              range:NSMakeRange(0, [searchText length])];

if (result == NSOrderedSame)
{
            NSInteger index;
            for (index =[array indexOfObject:string]; (index < [array count] && index < 100 && index!= NSNotFound); index ++)
            {
                [self.mutablearray addObject:[array objectAtIndex: index]];         

            }

break;

}

}
Run Code Online (Sandbox Code Playgroud)

编辑.

我之前的代码是有效的,它位于if(result == NSOrderedSame)里面我只是想知道是否有更好,更容易和性能友好的解决方案在它到达NSNotFound之前提取索引:

        NSUInteger new = [array indexOfObject:string];

        NSString *last = [array lastObject];

        NSUInteger total = [array indexOfObject:last];

        NSUInteger newmax = new + 10;

        NSUInteger totalminus = total - 11;


        if (newmax <= totalminus )

        {

            [self.mutablearray addObject:string];

            [self.mutablearray addObject:[array objectAtIndex:new + 1]];

            [self.mutablearray addObject:[array objectAtIndex:new + 2]];
            [self.mutablearray addObject:[array objectAtIndex:new + 3]];
            [self.mutablearray addObject:[array objectAtIndex:new + 4]];
            [self.mutablearray addObject:[array objectAtIndex:new + 5]];
            [self.mutablearray addObject:[array objectAtIndex:new + 6]];
            [self.mutablearray addObject:[array objectAtIndex:new + 7]];
            [self.mutablearray addObject:[array objectAtIndex:new + 8]];
            [self.mutablearray addObject:[array objectAtIndex:new + 9]];
            [self.mutablearray addObject:[array objectAtIndex:new + 10]];
        }

        else 
        {
            [self.mutablearray addObject:string];
        }
Run Code Online (Sandbox Code Playgroud)

Jim*_*Jim 6

这不是如何NSArrayNSNotFound工作.尝试访问超过结束的对象NSArray将引发异常.有没有具体的理由为什么你想这样做?使用快速枚举要容易得多:

for (id object in array) {
    [self.mutablearray addObject:object];
}
Run Code Online (Sandbox Code Playgroud)

编辑:我从其他评论中看到,您希望将此限制为最多添加到可变数组的100个对象.这很容易:

NSUInteger count = 0;
for (id object in array) {
    [self.mutablearray addObject:object];
    count++;
    if (count >= 100) break;
}
Run Code Online (Sandbox Code Playgroud)