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

标签 ios objective-c for-loop

我有一个 nsmutablearray,我在一个 nsarray 的 for 循环中向它添加对象。我希望它添加对象,直到它从 NSArray 到达 indexOfObject: 中的 NSNotFound。 该数组位于 for 循环内,用于从每个索引中提取字符串。

我的代码:

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

for (index; index < untilNotFound; index ++)
{           
    [self.mutablearray addObject:[array objectAtIndex: index]];
}

编辑:

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;

}

}

编辑。

我以前的代码有效,它在 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];
        }

最佳答案

NSArrayNSNotFound 不是这样工作的。尝试访问 NSArray 末尾之后的对象将引发异常。您想这样做有什么具体原因吗?使用快速枚举要容易得多:

for (id object in array) {
    [self.mutablearray addObject:object];
}

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

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

关于ios - 当 for 循环从 NSArray 到达 NSNotFound 时如何中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7890976/

相关文章:

ios - Swift 1.2 - 在 Xcode 6.3.2 和 Xcode 4 中找不到桥接头文件消息

ios - 在 UIStackView 控件中调整 UIView 高度

objective-c - 可以调用 +[NSData dataWithData :] with an NSMutableData object?

objective-c - 下载 APNG 文件

java - For 循环未执行;

java - for循环中嵌套类,会不会有n个类的实例?

iphone - 在 iOS 上的 Objective-C 中设置委托(delegate)

c++ - 为 Mac OS X 设置 WindowsHookEx?

javascript - JavaScript 中奇怪的 for 循环

ios - 如何使 UITabBarItem 成为来自 unicode 的图像?