对于在Objective-C中如何处理数组,我感到有点困惑。 如果我有作为如何更改NSArray中的元素?
NSarray *myArray = [[NSArray alloc]
initWithObjects:@"N", @"N", @"N", @"N", @"N",
nil];
这样的一个数组我如何更改的第一次出现,以“Y”?
对于在Objective-C中如何处理数组,我感到有点困惑。 如果我有作为如何更改NSArray中的元素?
NSarray *myArray = [[NSArray alloc]
initWithObjects:@"N", @"N", @"N", @"N", @"N",
nil];
这样的一个数组我如何更改的第一次出现,以“Y”?
你需要一个NSMutableArray ..
NSMutableArray *myArray = [[NSMutableArray alloc]
initWithObjects:@"N", @"N", @"N", @"N", @"N",
nil];
然后
[myArray replaceObjectAtIndex:0 withObject:@"Y"];
你不能,因为NSArray
是不可变的。但如果您使用NSMutableArray
,那么您可以。见replaceObjectAtIndex:withObject:
:
[myArray replaceObjectAtIndex:0 withObject:@"Y"]
非常感谢您的快速响应! – Namhcir
写一个辅助方法
-(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;
}
你甚至可以添加这个作为一个类别,并让它很容易获得。
谢谢你的回答。非常感谢。 – Namhcir