2012-10-29 136 views
0

我想这个代码...附加的字符串不工作

NSString *tileString = [[NSString alloc] init];  

for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) { 

      tileString = [[GameP objectForKey:@"groundMap"] substringWithRange:NSMakeRange(i, 5)]; 

      [tileString stringByAppendingString:@"0000"]; 

      [sharedInstance.groundMap addObject:tileString]; 
     } 

这是一个从物体发出的5字符字符串为“T0001”,所以我想用“t0001000”结束了,但它的不工作,当我检查sharedInstance.groundMap数组中的所有字符串仍然是“t0001”

我应该使用NSMutableString吗?

回答

3

您没有分配结果。更改此:

[tileString stringByAppendingString:@"0000"]; 

到:

titleString = [tileString stringByAppendingString:@"0000"]; 

有更多一点的清理,你也能做到:

for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) { 
    NSString *tileString = [[GameP objectForKey:@"groundMap"] substringWithRange:NSMakeRange(i, 5)]; 
    titleString = [tileString stringByAppendingString:@"0000"]; 
    [sharedInstance.groundMap addObject:tileString]; 
} 
+0

谢谢你,为什么你的版本我没有必要的alloc和init,它已经通过substringWithRange完成了吗? – Phil

+0

@Phil,是substringFromRange返回一个字符串,所以你的alloc init是不必要的。 – rdelmar

+0

alloc/init用于创建一个新对象。你只需要一个现有的参考。你所得到的是一个浪费的字符串,只要你将另一个字符串赋给'tileString',就会被丢弃。 – rmaddy