-1

特定の(指定された)電話番号がその配列に含まれているかどうかを確認する必要がある電話番号の配列があります.NSPredicateを使用してそれを行うにはどうすればよいですか.(NB現在、配列にはオブジェクトメソッドが含まれています.私の問題では、述語を使用した解決策が必要です)。誰かがこれを知っているなら、私を助けてください

 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;

            }
4

2 に答える 2

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];
于 2013-10-18T05:57:05.057 に答える
1

NSPredicateを使用しているにもかかわらず、1つの良い解決策があり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);
    }
}
于 2013-10-18T06:08:44.597 に答える