配列内の文字列を検索しようとしていますが、文字列の配列内の最後の 5 つのオブジェクトのみを検索したいと考えています。
NSRange で見つけることができるすべてのパラメーターをいじっていますが、役に立ちません。
いくつかのサンプルコードを投稿しますが、イントロスペクション、列挙、または見逃したNSRange呼び出しのいずれであっても、必要な行を取得することさえできません.
配列内の文字列を検索しようとしていますが、文字列の配列内の最後の 5 つのオブジェクトのみを検索したいと考えています。
NSRange で見つけることができるすべてのパラメーターをいじっていますが、役に立ちません。
いくつかのサンプルコードを投稿しますが、イントロスペクション、列挙、または見逃したNSRange呼び出しのいずれであっても、必要な行を取得することさえできません.
配列要素が検索した文字列である場合は、次のように配列を直接確認できます。
if ([yourArray containsObject:yourString])
{
int index = [yourArray indexOfObject:yourString];
if (index>= yourArray.count-5)
{
// Your string matched
}
}
私はこれが好きindexesOfObjectsWithOptions:passingTest:
です。例:
NSArray *array = @[@24, @32, @126, @1, @98, @16, @67, @42, @44];
// run test block on each element of the array, starting at the end of the array
NSIndexSet *hits = [array indexesOfObjectsWithOptions:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
// if we're past the elements we're interested in
// we can set the `stop` pointer to YES to break out of
// the enumeration
if (idx < [array count] - 5) {
*stop = YES;
return NO;
}
// do our test -- if the element matches, return YES
if (40 > [obj intValue]) {
return YES;
}
return NO;
}];
// indexes of matching elements are in `hits`
NSLog(@"%@", hits);
これを試して :-
//Take only last 5 objects
NSRange range = NSMakeRange([mutableArray1 count] - 5, 5);
NSMutableArray *mutableArray2 = [NSMutableArray arrayWithArray:
[mutableArray1 subarrayWithRange:range]];
//Now apply search logic on your mutableArray2
for (int i=0;i<[mutableArray2 count];i++)
{
if ([[mutableArray2 objectAtIndex:i] isEqualToString:matchString])
{
//String matched
}
}
これがお役に立てば幸いです!