2011-07-08 147 views
0
NSMutableArray *tempMutableArray = [[NSMutableArray alloc] init]; 
if (street != NULL) { 
[tempMutableArray addObject:(NSString *)street]; 
} 
if (city != NULL) { 
[tempMutableArray addObject:(NSString *)city]; 
} 
if (state != NULL) { 
[tempMutableArray addObject:(NSString *)state]; 
}      
if (zip != NULL) { 
[tempMutableArray addObject:(NSString *)zip]; 
} 
if (country != NULL) { 
// Check to see if the country is USA/Canada 
NSStringCompareOptions compareOptions = NSDiacriticInsensitiveSearch; 
NSArray* countryIndex = [[NSArray alloc] initWithObjects:@"United States of America", @"United States", @"U.S.A.", @"USA", @"US", @"U.S.", @"Canada", @"CAN", @"CDN", @"CA", nil]; 

for (NSString* element in countryIndex) 
{ 
NSComparisonResult result = [(NSString *)country compare:element options:compareOptions]; 
if (NSOrderedSame == result) { 
// Do another thing here if they match... 
CFRelease(country); 
country = CFStringCreateWithCString(NULL, "", kCFStringEncodingUTF8); 
} 
else { 
// Try something else... 
[tempMutableArray addObject:(NSString *)country]; 
} 
} 
} 
for (NSString* element in tempMutableArray) 
{ 
    syntheticAddress = [syntheticAddress stringByAppendingString:[NSString stringWithFormat:@"%@ ,", element]]; 
NSLog(@"synthetic address is %@", syntheticAddress); 
} 

的问题是,输出变得过度条目枚举问题

2011-07-08 14:42:38.077 TestingApp[3770:ef03] synthetic address is 123 Main Street , 
2011-07-08 14:42:40.673 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity , 
2011-07-08 14:42:42.510 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA , 
2011-07-08 14:42:44.136 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 , 
2011-07-08 14:42:45.637 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , 
2011-07-08 14:42:49.968 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , 
2011-07-08 14:42:52.046 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , 
2011-07-08 14:42:54.306 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , 
2011-07-08 14:42:55.730 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , , 
2011-07-08 14:42:58.487 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , , , 
2011-07-08 14:43:00.035 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , , , , 
2011-07-08 14:43:01.237 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , , , , , 
2011-07-08 14:43:06.263 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , , , , , , 
2011-07-08 14:43:10.537 TestingApp[3770:ef03] Address is 123 Main Street ,SomeCity ,AA ,00000 ,United States , , , , , , , , 

我想输出只有

2011-07-08 14:42:38.077 TestingApp[3770:ef03] synthetic address is 123 Main Street , 
2011-07-08 14:42:40.673 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity , 
2011-07-08 14:42:42.510 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA , 
2011-07-08 14:42:44.136 TestingApp[3770:ef03] synthetic address is 123 Main Street ,SomeCity ,AA ,00000 
+0

你期望输出什么? – Nico

回答

1

你的NSLog是里面的for循环。

编辑:

for (NSString* element in countryIndex) 
{ 
     NSComparisonResult result = [(NSString *)country compare:element options:compareOptions]; 
     if (NSOrderedSame == result) { 
       // Do another thing here if they match... 
       CFRelease(country); 
       country = CFStringCreateWithCString(NULL, "", kCFStringEncodingUTF8); 
     } 
     else { 
      // Try something else... 
      [tempMutableArray addObject:(NSString *)country]; 
     } 
} 

看上面的代码。你的if条件只会成功一次(我假设)..但你的其他条件会击中所有其他不匹配。每次失败时,都会向tempMutableArray添加一个国家对象。这是你想要的吗?

编辑2:这应该是正确的做法。

for (NSString* element in countryIndex) 
{ 
     NSComparisonResult result = [(NSString *)country compare:element options:compareOptions]; 
     if (NSOrderedSame == result) { 
      [tempMutableArray addObject:(NSString *)country]; 
      break; 
     } 
     else { 
      // Try something else... 
      // No match. Go on to the next element compare. 
     } 
} 
+0

是的,但问题是,我得到多余的逗号?街道名称,城市,新泽西州,00000,美国,,,,,, –

+0

? – Kal

+0

多余的逗号。是的 –