2011-07-13 7 views
4

Objective-Cで配列がどのように処理されるのか、少し混乱します。 私はそのような私が「Y」に最初に出現を変更するにはどうすればよいNSArray内の要素をどのように変更しますか?

NSarray *myArray = [[NSArray alloc] 
            initWithObjects:@"N", @"N", @"N", @"N", @"N", 
            nil]; 

として配列を持っている場合は?

答えて

9
あなたはNSMutableArrayのを必要とする

..

NSMutableArray *myArray = [[NSMutableArray alloc] 
            initWithObjects:@"N", @"N", @"N", @"N", @"N", 
            nil]; 

、その後

[myArray replaceObjectAtIndex:0 withObject:@"Y"]; 
+0

ありがとうございました。非常に感謝しています。 – Namhcir

5

NSArrayは不変なので、できません。しかし、代わりにNSMutableArrayを使用すると、それを行うことができます。 replaceObjectAtIndex:withObject:を参照してください:

[myArray replaceObjectAtIndex:0 withObject:@"Y"] 
+0

すばやくご回答いただきありがとうございます。 – Namhcir

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); 

これはあなたが

を出力
NSDictionary *dict = @{@"name": @"Albert", @"salary": @3500}; 
dict = [self replaceObjectWithKey:@"salary" inDictionary:dict withObject:@4400]; 
logObject(dict); 

でそれをテストすることができますNSDictionaryの

-(NSDictionary *)replaceObjectWithKey:(id)key inDictionary:(NSDictionary *)dict withObject:(id)object { 
    NSMutableDictionary *mutableDict = [dict mutableCopy]; 
    mutableDict[key] = object; 
    return [NSDictionary dictionaryWithDictionary:mutableDict]; 
} 

のための同様の方法を使用することができます

arr = (
    a, 
    d, 
    c 
) 

を出力

dict = { 
    name = Albert; 
    salary = 4400; 
} 

これをカテゴリとして追加して、簡単に利用できるようにすることもできます。

関連する問題