I have a nsmutablearray which I add object to it in a for loop from a nsarray. I want it to add object until it reaches NSNotFound in indexOfObject: from NSArray.
The array is inside a for loop to extract string from every index.
My code:
NSInteger untilNotFound = NSNotFound;
NSUInteger index = [array indexOfObject:string];
for (index; index < untilNotFound; index ++)
{
[self.mutablearray addObject:[array objectAtIndex: index]];
}
Edit:
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;
}
}
EDIT.
My previous code that works, it is inside if (result == NSOrderedSame) I just wonder if there is any nicer and easier and performance-friendly solution to extract indexes just before it reaches 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];
}
Looks like you’re trying to do a cumulative subset. Try this:
Or, if you’re just doing a strict subset, try this: