[iphone] NSDictionary에 추가하는 방법

나는 a를 사용하고 NSMutableArray있었고 사전을 사용하는 것이 내가 달성하려는 것에 대해 훨씬 더 간단하다는 것을 깨달았습니다.

키를 a로 저장하고 NSString값을으로 int사전 에 저장하고 싶습니다 . 어떻게하나요? 둘째, 가변 사전과 일반 사전의 차이점은 무엇입니까?



답변

변경 가능한 사전은 변경 추가 및 제거 개체 수, 즉 수 있습니다. 불변는 이 생성되면 고정된다.

생성 및 추가 :

NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:10];
[dict setObject:[NSNumber numberWithInt:42] forKey:@"A cool number"];

검색 :

int myNumber = [[dict objectForKey:@"A cool number"] intValue];


답변

설정하면 개체의 setValue:(id)value forKey:(id)key방법을 사용 NSMutableDictionary합니다.

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:[NSNumber numberWithInt:5] forKey:@"age"];

또는 최신 Objective-C에서 :

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"age"] = @5;

mutable과 “normal”의 차이점은 가변성입니다. 즉 , “normal” 과 함께 할 수없는 동안 NSMutableDictionary(및 NSMutableArray) 의 내용을 변경할 수 있습니다.NSDictionaryNSArray


답변

배열이 선언 될 때마다 다음과 같이 NSDictionary에 키-값을 추가해야합니다.

NSDictionary *normalDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Value1",@"Key1",@"Value2",@"Key2",@"Value3",@"Key3",nil];

이 NSDictionary에서 키 값을 추가하거나 제거 할 수 없습니다.

NSMutableDictionary에서와 마찬가지로이 방법을 사용하여 배열을 초기화 한 후 객체를 추가 할 수 있습니다.

NSMutableDictionary *mutableDict = [[NSMutableDictionary alloc]init];'
[mutableDict setObject:@"Value1" forKey:@"Key1"];
[mutableDict setObject:@"Value2" forKey:@"Key2"];
[mutableDict setObject:@"Value3" forKey:@"Key3"];

키 값을 제거하려면 다음 코드를 사용해야합니다.

[mutableDict removeObject:@"Value1" forKey:@"Key1"];


답변

버전 업데이트

목표 -C

창조하다:

NSDictionary *dictionary = @{@"myKey1": @7, @"myKey2": @5};

변화:

NSMutableDictionary *mutableDictionary = [dictionary mutableCopy];     //Make the dictionary mutable to change/add
mutableDictionary[@"myKey3"] = @3;

약식 구문은 Objective-C Literals.

빠른

창조하다:

var dictionary = ["myKey1": 7, "myKey2": 5]

변화:

dictionary["myKey3"] = 3


답변

당신이 물어보고 싶은 것은 “변형 가능한 배열과 비 변형 가능한 배열 또는 사전의 차이점은 무엇입니까?”입니다. 이미 알고있는 것을 설명하기 위해 여러 용어가 사용됩니다. 이 경우 “mutable”이라는 용어를 “dynamic”으로 바꿀 수 있습니다. 따라서 변경 가능한 사전 또는 배열은 “동적”이며 런타임에 변경 될 수있는 반면, 변경 불가능한 사전 또는 배열은 “정적”이고 코드에서 정의되고 런타임에 변경되지 않는 사전 또는 배열입니다. , 요소를 추가, 삭제 또는 정렬하지 않습니다.)

수행 방법에 관해서는 여기에서 문서를 반복하도록 요청하고 있습니다. 여러분이해야 할 일은 샘플 코드와 Xcode 문서를 검색하여 정확히 어떻게 수행되는지 확인하는 것입니다. 하지만 제가 처음 배웠을 때 변덕스러운 일도 저를 던졌습니다. 그래서 그것을 줄 것입니다!


답변

참고 로 리터럴 initWithDictionary로 초기화 하는 데 사용할 수도 있습니다 NSMutableDictionary.

NSMutableDictionary buttons = [[NSMutableDictionary alloc] initWithDictionary: @{
    @"touch": @0,
    @"app": @0,
    @"back": @0,
    @"volup": @0,
    @"voldown": @0
}];


답변