2010-10-29 3 views
0

J'ai un NSArray qui détient Foo objets définis comme ceci:résultats de la recherche sont toujours 0 (NSArray et NSPredicate)

@interface Foo : NSObject <NSCopying> { 
    NSString *name; 
} 
@property (nonatomic, retain) NSString *name; 
@end 

et la requête:

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", filterString]; 
//NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@", filterString]; 
filteredArray = [[originalArray filteredArrayUsingPredicate:filterPredicate] mutableCopy]; 

et cela ne fonctionne pas. J'ai toujours 0 résultats.

Alors, ma question est:

Dois-je toujours utiliser NSPredicate pour la recherche uniquement NSDictionary objets avec une certaine clé ou puis-je utiliser pour la recherche tout objet tant qu'il y est une propriété/méthode qui correspond à la requête (dans ce cas: nom)?

Merci d'avance

Répondre

2

Votre code est correct. Je l'ai essayé:

@interface Foo : NSObject 

@property (nonatomic, retain) NSString * name; 

@end 
@implementation Foo 

@synthesize name; 

@end 

NSMutableArray * a = [NSMutableArray array]; 
for (int i = 0; i < 100; ++i) { 
    Foo * f = [[Foo alloc] init]; 
    [f setName:[NSString stringWithFormat:@"%d", i]]; 
    [a addObject:f]; 
    [f release]; 
} 

NSPredicate * p = [NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", @"1"]; 
NSArray * filtered = [a filteredArrayUsingPredicate:p]; 
NSLog(@"%@", [filtered valueForKey:@"name"]); 

Journaux:

2010-10-29 10:51:22.103 EmptyFoundation[49934:a0f] (
    1, 
    10, 
    11, 
    12, 
    13, 
    14, 
    15, 
    16, 
    17, 
    18, 
    19 
) 

Ce qui me conduit à demander: Est-ce votre originalArray vide?

+0

..... Ou 'nil'? –

+0

Ou 'nil' .... :) –

+0

merci, en effet, il semble correct, je me suis rendu compte que mon erreur était ailleurs. ( – nacho4d

Questions connexes