2011-10-31 72 views
0
NSString * str = @"ABCDEFGHILMN"; 

NSDictionary *dictOdd = [[NSDictionary alloc] initWithObjectsAndKeys: 
          [NSNumber numberWithInt:0], @"A", 
          [NSNumber numberWithInt:1], @"B", 
          [NSNumber numberWithInt:2], @"C", 
          [NSNumber numberWithInt:3], @"D", 
          ............................... 
          nil]; 

NSDictionary *dictEven = [[NSDictionary alloc] initWithObjectsAndKeys: 
          [NSNumber numberWithInt:1], @"A", 
          [NSNumber numberWithInt:0], @"B", 
          [NSNumber numberWithInt:5], @"C", 
          [NSNumber numberWithInt:7], @"D", 
          ............................... 
          nil]; 

int sum = 0; 
for (int i=1; i < [str length]; i++){ 
    if(i % 2){ 
     sum += [dictPair objectForKey:str[i]]; 
    }else{ 
     sum += [dictEven objectForKey:str[i]]; 
    } 
} 

我已经创建了2个字典存储int数字/字母,每个字母都有一个int值。NSDictionary和循环

我会使int数与我的str值相关的总和,但我不知道如何分配objectForKey:str [i]];

回答

1

我认为你正在寻找characterAtIndex:这会使你

sum+=[[dictPair objectForKey:[NSString stringWithFormat:@"%C",[str characterAtIndex:i]]] intValue]; 
+2

从技术上讲,应该是'%C',因为'characterAtIndex:'返回一个unichar。 – Chuck

+0

谢谢。对于字符串的字符格式,我有点生疏 – utahwithak

0

你应该做这样的事情,根据NSString Class Reference

记住的NSNumber和INT是不同的,你加入之前应该转换他们。

NSString *str = ... 

NSDictionary *dictOdd = ... 
NSDictionary *dictOdd = ... 

int sum = 0; 
for (int i = 0; i < [str length]; i++) { 

    if(i % 2 == 0) 
     sum += [[dictPair objectForKey:[str characterAtIndex:i]] intValue]; 
    else 
     sum += [[dictEven objectForKey:[str characterAtIndex:i]] intValue]; 
}