nsdictionary가 쌍을 이루는 값에 좋으면 트리플 값에 좋은 점은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1017564

문제

NSDictionary는 키 값 쌍에 적합합니다. 세 가지 값이있을 때 가장 적합한 데이터 구조는 무엇입니까? 해당 3 값에 대한 클래스를 작성한 다음 배열의 각 개체에 해당 클래스의 인스턴스가 포함되도록하는 것이 가장 좋습니까?

구체적으로 : 데이터 구조, 사람이라고 부르십시오. 나는 세 가지 값을 가지고 있습니다 : (nsstring) 이름, (int) age, (bool) Isalive

이들은 배열 (?)에서 유지됩니다. 이름을 키로 사용하고 0에서 시작하는 숫자가있는 전체 블록을 참조하는 것이 중요합니다.

도움이 되었습니까?

해결책

하나의 키와 두 값이있는 경우 두 값에 대한 클래스를 만들고 여전히 사전을 사용할 것입니다.

두 개의 키와 하나의 값이 있다면 아마도 중첩 사전, 즉 키가 첫 번째 키이고 값이 다른 사전 인 사전을 사용할 것입니다. 중첩 사전의 키는 두 번째 키이며 값은 실제 값입니다.

ETA :

질문을 명확히 했으므로 Key 또는 Integer Index로 컬렉션에 액세스 해야하는 경우 사전을 사용할 수 있습니다.

키로 항목을 얻으려면 다음을 수행 할 수 있습니다.

[myDict objectForKey:@"joe"];

색인 별 항목을 얻으려면 AllKeys 배열을 사용할 수 있습니다.

[myDict objectForKey:[[myDict allKeys] objectAtIndex:1]];

인덱스별로 사람들을 얻는 유일한 목적이 전체 컬렉션을 반복하는 경우 KeyEnumerator 메소드를 사용하여 루프에서 키를 열거하고 키를 사용하여 값을 찾아 보는 것이 좋습니다.

다른 팁

핵심 데이터를 사용하여 관계형 데이터베이스 모델을 사용하여보다 복잡한 데이터 관계를 나타낼 수 있습니다.

예제 및 문서는 Apple의 개발자 사이트를 확인하십시오.

처음에는 관련이없는 것처럼 보이지만 이것에서 사전 지향 구조를 확인하십시오. 코코아 바인딩 소개. (Cocoadevcentral과 Scott Stevenson은 새로운 Cocoa 개발자에게 훌륭한 자료입니다.) 그가 사용하는 접근 방식은 매우 유연하고 도로를 쉽게 바꿀 수 있습니다. IVAR 대신 사전을 사용하는 것이 항상 최선의 솔루션은 아니지만 귀하의 요구에 적합 할 수 있습니다.

메모: 핵심 데이터와 마찬가지로 코코아 바인딩도 매우 복잡한 주제입니다. 튜토리얼의 조직 측면 만 사용하는 것이 좋습니다. :-)

일종의 일반화 된 데이터 구조를 만들려고하는지 여부에 따라 다릅니다. '세 가지'가 앱 내에서 특별한 개념이라면 당신은 도메인 모델 -이 경우 클래스에서 이러한 값을 캡슐화하는 것이 현명 할 수 있습니다.

기능과 같은 사전이 필요한 경우 - [nsdictionary objectorkey :] 등 - 클래스 인스턴스에 키 값을 매핑하는 인덱스로 하나 이상의 사전을 사용할 수 있습니다.

Coredata (저장하는 경우)를 살펴보고 객체에 대한 클래스를 정의해야합니다. nsdictionary와 같은 기본 제네릭 객체는 사람과 같은 복잡한 물체를 구성하는 복잡한 값을 저장하기위한 것이 아닙니다.

Person *person = [[Person alloc] init];
person.firstName = @"blah";
person.age = 24;
person.isAlive = YES;

그것이 a의 설명이 아닙니다 2 차원 정렬?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top