Changeset 395
- Timestamp:
- 06/15/09 17:56:35 (4 years ago)
- Location:
- apps/iphone/superbook/trunk/Classes
- Files:
-
- 2 modified
-
DotTelABMapper.h (modified) (1 diff)
-
DotTelABMapper.m (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
apps/iphone/superbook/trunk/Classes/DotTelABMapper.h
r382 r395 54 54 - (NSError *)setField:(id)field; 55 55 56 - (BOOL)record:(NSString *)aRec isEqualToRecord:(NSString *)otherRec forProperty:(ABPropertyID)property; 57 - (BOOL)phone:(NSString *)aPhone isEqualToPhone:(NSString *)otherPhone; 58 56 59 @end -
apps/iphone/superbook/trunk/Classes/DotTelABMapper.m
r394 r395 49 49 CFStringRef aVal = (CFStringRef)ABMultiValueCopyValueAtIndex(allupdated, i); \ 50 50 if (aVal) { \ 51 if ( CFStringCompare(abValue, aVal, 0) == kCFCompareEqualTo) { \51 if ([self record:(NSString *)abValue isEqualToRecord:(NSString *)aVal forProperty:kValType]) { \ 52 52 exists = YES; \ 53 53 CFRelease(aVal); \ … … 613 613 } 614 614 615 #pragma mark ---- utility methods ---- 616 617 - (BOOL)record:(NSString *)aRec isEqualToRecord:(NSString *)otherRec forProperty:(ABPropertyID)property { 618 if (property == kABPersonPhoneProperty) 619 return [self phone:aRec isEqualToPhone:aRec]; 620 return [aRec isEqualToString:otherRec]; 621 } 622 623 - (BOOL)phone:(NSString *)aPhone isEqualToPhone:(NSString *)otherPhone { 624 char *p1 = (char *)[aPhone cStringUsingEncoding:NSUTF8StringEncoding]; 625 char *p2 = (char *)[otherPhone cStringUsingEncoding:NSUTF8StringEncoding]; 626 BOOL areEqual = TRUE; 627 int i = 0; 628 int j = 0; 629 while ((char)p1[i] != '\0') { 630 if ((p1[i] == ' ') || (p1[i] == '-') || (p1[i] == '(') || (p1[i] == ')')) { 631 i++; 632 //NSLog(@"Skipped p1 char '%c' at index %d", p1[i], i); 633 continue; 634 } 635 if (p2[j] == '\0') { 636 //NSLog(@"End of p2 at %d, shorter than p1 at %d", j, i); 637 areEqual = FALSE; 638 break; 639 } 640 while (p2[j] != '\0') { 641 if ((p2[j] == ' ') || (p2[j] == '-') || (p2[j] == '(') || (p2[j] == ')')) { 642 //NSLog(@"Skipped p2 char '%c' at index %d", p2[j], i); 643 j++; 644 continue; 645 } 646 if(p1[i] != p2[j]) { 647 areEqual = FALSE; 648 //NSLog(@"Failed compare of p1[%d] '%c' and p2[%d] '%c'", i, p1[i], j, p2[j]); 649 break; 650 } 651 //NSLog(@"Success compare of p1[%d] '%c' and p2[%d] '%c'", i, p1[i], j, p2[j]); 652 i++; 653 j++; 654 break; 655 } 656 if (!areEqual) // we already have a miss 657 break; 658 } 659 if (areEqual) { // we are equal up to end of p1. Check that p2 isn't longer 660 while (p2[j] != '\0') { 661 if ((p2[j] == ' ') || (p2[j] == '-') || (p2[j] == '(') || (p2[j] == ')')) { 662 //NSLog(@"Skipped p2 char '%c' at index %d, after p1 end", p1[i], i); 663 j++; 664 continue; 665 } 666 //NSLog(@"Extra character(s) for p2 starting at index %d: '%c'", j, p2[j]); 667 areEqual = FALSE; 668 break; 669 } 670 } 671 return areEqual; 672 } 673 615 674 #pragma mark ---- cleanup ---- 616 675








