我如何更换元素? 我尝试这样,但它不起作用
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];
}
答案 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];