對於在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