2011-10-31 76 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]; 
}