16

プロパティを持つNSArraywith オブジェクトがありnameます。

配列をフィルタリングしたいname

    NSString *alphabet = [agencyIndex objectAtIndex:indexPath.section];
    //---get all states beginning with the letter---
    NSPredicate *predicate =
    [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", alphabet];
    NSMutableArray *listSimpl = [[NSMutableArray alloc] init];
    for (int i=0; i<[[Database sharedDatabase].agents count]; i++) {
        Town *_town = [[Database sharedDatabase].agents objectAtIndex:i];
        [listSimpl addObject:_town];
    }
    NSArray *states = [listSimpl filteredArrayUsingPredicate:predicate];

しかし、エラーが発生します-「文字列ではないもので部分文字列操作を行うことはできません (lhs = <1, Arrow> rhs = A)」

これどうやってするの?name「A」である最初の文字の配列をフィルタリングしたいと思います。

4

6 に答える 6

24

次のコードで試してください

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF like %@", yourName];
NSArray *filteredArr = [yourArray filteredArrayUsingPredicate:pred];

編集済み:

NSPredicateパターンは次のとおりです。

NSPredicate *pred =[NSPredicate predicateWithFormat:@"name beginswith[c] %@", alphabet];
于 2013-09-10T09:19:25.823 に答える
3

NSArray offers another selector for sorting arrays:

NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(Person *first, Person *second) {
    return [first.name compare:second.name];
}];
于 2013-09-10T09:05:12.537 に答える
1

配列をフィルタリングする場合は、次のコードをご覧ください。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", @"qwe"];
NSArray *result = [self.categoryItems filteredArrayUsingPredicate:predicate];

ただし、配列を並べ替えたい場合は、次の関数を見てください。

- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context;
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context hint:(NSData *)hint;
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator;
于 2013-09-10T09:18:33.617 に答える
0

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.htmlにアクセスしてください。

これを使って

[listArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
于 2013-09-10T09:09:03.897 に答える