나는 NSMutableDictionary이 같은 구조, stuff
라고 있습니다 다중 레벨 사전에서 값을 설정/가져 오는 방법은 무엇입니까?
{
"ThingStats" : { "Thing1" : { "stat1" : 12,
"stat2" : 21 } ,
"Thing2" : { "stat1" : 4,
"stat2" : 15 }
} ,
"OtherStuff" : {...}
}
가
ThingStats
뿐만 아니라 그것이 첫 번째 수준에서 다른 사전을 가질 수 있습니다.
stat1 = stuff[@"ThingStats"][@"Thing1"][@"stat1"];
과 같이 설정하십시오 :
사용하여이 같은 Thing1's
stat1
를 쉽게 얻을 첨자
stuff[@"ThingStats"][@"Thing1"][@"stat1"] = @13;
이 모든 작품 큰 키가 존재하는 경우.
첫 번째 질문 다음 ThingStats
사전 아직 stuff
에 존재하지 않는 경우, ThingStats
은 첫 번째 항목 시작의 구조를 얻을 수있는 가장 좋은 방법은 무엇입니까? 예를 들어 stat1
및 stat2
의 값이 Thing1
인 경우 stuff
사전에서 아래 표시된 stuff
사전으로 끝나는 가장 쉬운 방법은 무엇입니까? stuff
이 0이 아닐 것이라고 가정합니다.
{ "ThingStats" : { "Thing1" : { "stat1" : 12, "stat2" : 21 } } }
두 번째 질문 : 나중에,이 구조가 결국 그 값을 추가하는 가장 좋은 방법이 무엇인지 Thing2
에 대한 stat1
및 stat2
값을 얻을 때 :
{
"ThingStats" : { "Thing1" : { "stat1" : 12,
"stat2" : 21 } ,
"Thing2" : { "stat1" : 4,
"stat2" : 15 }
}
}
셋째 질문 : : 위의 첨자 기술을 사용하여 stat에 새로운 값을 설정하려면 먼저 키와 같은 값을 가지는 모든 키가 존재하는지 확인해야합니다.
if (stuff[@"ThingStats"][@"Thing1"][@"stat1"]) {
stuff[@"ThingStats"][@"Thing1"][@"stat1"] = newValue;
} else {
// add the new stat some other way
}
"이걸 추가하는 가장 좋은 방법은 무엇입니까?" – kezi
그것은 단지 객체입니다 - 사전과 배열. 기억해야 할 점은 리터럴 표현식으로 생성 된 사전/배열은 불변이며, 사전/배열을 수정하려면 변경 가능해야한다는 것입니다. –
내가 얻으면'[NSMutableDictionary dictionary]'로 새로운 사전을 만든다. 'myDict [@ "keyValue"] = elementValue;를 사용하여 요소를 추가하십시오. 구조가 완료 될 때까지 계속 그렇게하십시오. –