0
-(void) vUpdateHistoryAndSuggestionEntries
{
    NSArray * potentialHistory = [[self class] arHistory];
}

potentialHistory はNSStringオブジェクトの配列です。

大文字と小文字を区別しない方法で、たとえば @"Cat" で始まる要素のみをフィルタリングしたい。たとえば、

NSArray が含まれている場合

キャシー・キャット・ドッグ

次に、次を含む配列が必要です

キャシーキャット

NSPredicate はこれに最適だと思います。他の方法でも構いません。

同様の質問があります。ただし、これらの質問では、NSArray に辞書が含まれています。配列の要素の要素ではなく、配列の実際の要素に基づいてフィルタリングしたい。

4

4 に答える 4

2
NSArray *yourArray;
NSPredicate *aPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'C'"];
NSArray *theFilteredArray = [yourArray filteredArrayUsingPredicate:aPredicate];

これがあなたを助けることを願っています。

于 2013-10-01T08:11:04.370 に答える
0

NSPredicate の使用方法の例を次に示します。

NSArray *sampleArray = @[@"Cathy", @"Cat", @"Dog"];
NSArray *filteredSampleArray = [sampleArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self contains[c] %@",@"ca"]];
NSLog(@"%@",filteredSampleArray);

これは出力されます:

( キャシー、猫 )

于 2013-10-01T08:12:21.843 に答える
0
NSString *filterStr = [NSString stringWithFormat:@"name LIKE[c] '*%1$@*'",searchStr];
NSPredicate *predicate = [NSPredicate predicateWithFormat:filterStr];
NSMutableArray *tempArray = [yourArrayofNames filteredArrayUsingPredicate:predicate];

// ここで name はプロパティで、yourArrayofNames はオブジェクトの配列です。

于 2013-10-01T10:34:45.713 に答える
-1

これだけは必要ありませんNSPredicate

for (NSString* item in arHistory){

    if ([item rangeOfString:@"cat" options:NSCaseInsensitiveSearch].location == 0){//occurs at beginning

        [potentialHistory addObject:item];
    }
}

編集: potentialHistory が不変の場合は、別の配列を使用してこれらとinitpotentialHistory を格納します。

NSArray* potentialArray = [NSArray arrayWithArray:(NSArray*)array]
于 2013-10-01T08:13:31.397 に答える