我对如何在Objective-C中处理数组感到困惑。 如果我有一个像
这样的数组NSarray *myArray = [[NSArray alloc]
initWithObjects:@"N", @"N", @"N", @"N", @"N",
nil];
如何将第一个匹配项更改为“Y”?
答案 0 :(得分:9)
你需要一个NSMutableArray ..
NSMutableArray *myArray = [[NSMutableArray alloc]
initWithObjects:@"N", @"N", @"N", @"N", @"N",
nil];
然后
[myArray replaceObjectAtIndex:0 withObject:@"Y"];
答案 1 :(得分:5)
你不能,因为NSArray
是不可变的。但是,如果您使用NSMutableArray
代替,那么您可以。见replaceObjectAtIndex:withObject:
:
[myArray replaceObjectAtIndex:0 withObject:@"Y"]
答案 2 :(得分:4)
编写辅助方法
-(NSArray *)replaceObjectAtIndex:(int)index inArray:(NSArray *)array withObject:(id)object {
NSMutableArray *mutableArray = [array mutableCopy];
mutableArray[index] = object;
return [NSArray arrayWithArray:mutableArray];
}
现在您可以使用
测试此方法NSArray *arr = @[@"a", @"b", @"c"];
arr = [self replaceObjectAtIndex:1 inArray:arr withObject:@"d"];
logObject(arr);
此输出
arr = (
a,
d,
c
)
您可以对NSDictionary使用类似的方法
-(NSDictionary *)replaceObjectWithKey:(id)key inDictionary:(NSDictionary *)dict withObject:(id)object {
NSMutableDictionary *mutableDict = [dict mutableCopy];
mutableDict[key] = object;
return [NSDictionary dictionaryWithDictionary:mutableDict];
}
您可以使用
进行测试NSDictionary *dict = @{@"name": @"Albert", @"salary": @3500};
dict = [self replaceObjectWithKey:@"salary" inDictionary:dict withObject:@4400];
logObject(dict);
输出
dict = {
name = Albert;
salary = 4400;
}
您甚至可以将其添加为类别并轻松使用。