2013-10-18 23 views
-1

我有一個電話號碼數組,我需要檢查一個特定(給定)電話號碼是否包含在該數組或不.So如何使用NSPredicate來做到這一點。 NB目前我正在使用數組包含對象method.in我的問題,我需要一個解決方案使用謂詞)。所以,如果有人知道這一點,請幫助我使用nspredicate檢查電話號碼數組

NSString *p = allUsers.phoneNumber; 
      NSString *p1 = [p stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
      NSString *p2 = [p1 stringByReplacingOccurrencesOfString:@"(" withString:@""]; 
      NSString *p3 = [p2 stringByReplacingOccurrencesOfString:@")" withString:@""]; 
      NSString *p4 = [p3 stringByReplacingOccurrencesOfString:@" " withString:@""]; 
      NSString *p5 = [p4 stringByReplacingOccurrencesOfString:@"+" withString:@""]; 
      NSString *p6 = [p5 stringByReplacingOccurrencesOfString:@"*" withString:@""]; 
      NSString *p7 = [p6 stringByReplacingOccurrencesOfString:@"#" withString:@""]; 


if ([arrayAllPhoneNumbers containsObject:p7]) 
      { 
       allUsers.isPhoneUser = YES; 

      } 

回答

2
// For number kind of values: 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF = %@", value]; 
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate]; 

// For string kind of values: 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains[cd] %@", value]; 
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate]; 

// For any object kind of value (yes, you can search objects also): 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", value]; 
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate]; 
+0

@abymathew:剛記得做[result objectAtIndex:0]來得到實際的結果。 –

+0

感謝你的兩個好的答案...我的確切問題是這個arrayallphonenumber [@ 12345,@ 5678],然後在我的p7值是345,所以我需要從arrayallphonenumbers採取12345值,所以我怎麼能得到這個 – abymathew

+0

好男人感謝您的寶貴答案...我的解決方案...從你的答案... – abymathew

1

一個很好的解決方案是在那裏,儘管使用NSPredicate的你可以用NSDatDetector 嘗試請嘗試以下: -

NSString *p = @"8147744507"; 
NSError *error = NULL; 
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink|NSTextCheckingTypePhoneNumber 
                  error:&error]; 
NSArray *matches = [detector matchesInString:p 
            options:0 
             range:NSMakeRange(0, [p length])]; 
for (NSTextCheckingResult *match in matches) 
{ 
    if ([match resultType] == NSTextCheckingTypePhoneNumber) 
    { 
     NSString *phoneNumber = [match phoneNumber]; 
     NSLog(@"phone no valid=%@",phoneNumber); 
    } 
}