如何将数组值替换为相同的+ 10

时间:2015-01-21 23:54:43

标签: ios objective-c arrays

我如何更换元素? 我尝试这样,但它不起作用

    NSMutableArray* marray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];

for (int i = 0; [marray count]; i++) {        
    NSInteger curentVal = [[marray objectAtIndex:i] intValue];
    curentVal += 5;
    [marray replaceObjectAtIndex:i withObject:curentVal];
}

2 个答案:

答案 0 :(得分:2)

您需要将curentVal转换回对象,在本例中为NSString

for声明中还有一个typeo。

NSMutableArray* marray = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", nil];
NSLog(@"marray: %@", marray);

for (NSInteger i = 0; i<[marray count]; i++) {
    NSInteger curentVal = [[marray objectAtIndex:i] intValue];
    curentVal += 5;
    NSString *curentValString = [NSString stringWithFormat:@"%ld", (long)curentVal];
    [marray replaceObjectAtIndex:i withObject: curentValString];
}
NSLog(@"marray: %@", marray);

输出:

marray: (
    1,
    2,
    3
)
marray: (
    6,
    7,
    8
)

以下是与NSNumbers相同的方法:

NSMutableArray* marray = [[NSMutableArray alloc] initWithObjects:@1, @2, @3, nil];
for (NSInteger i = 0; i<[marray count]; i++) {
    NSInteger curentVal = [[marray objectAtIndex:i] intValue];
    curentVal += 5;
    [marray replaceObjectAtIndex:i withObject:@(curentVal)];
}

答案 1 :(得分:1)

curentVal不是一个对象。你应该把:

 [marray replaceObjectAtIndex:i withObject:@(curentVal)];

所以curentVal转换为NSNumber

你也可能想要处理数字,所以把:

NSMutableArray* marray = [[NSMutableArray alloc] initWithObjects:@1, @2, @3, nil];