2010-08-19 2 views
0

내가 뭘하려는 건지, 텍스트 문자열의 배열을 만드는 것입니다 그리고 나는이 배열에서 정상적으로 쉽게 할 수있는 임의의 텍스트 문자열을 선택하고 싶습니다. 그러나 나는 또한 범주에 넣을 수 있기를 원하며 무작위로 하나를 선택할 때 그 범주가 무엇인지 알기를 원합니다. 카테고리의 모든 항목을 동일한 키로 설정하는 것과 마찬가지로 NSDictionary에서 키를 사용하여 범주를 결정할 수 있다고 생각했습니다. 그러나 그 사전에서 무작위로 추출하여 어떻게 그 열쇠가 무엇인지 알 수는 없습니다. 나는 그것에 대해 많이 알지 못하므로 NSDictionary를 사용한 적이 없다. 그래서 방금 말한 것이 의미가 없다.이 NSDictionary 함께 가능합니까? 아니면 다른 것을 사용해야합니까?

완전히 잘못된 방식으로 접근 할 수도 있습니다. 따라서 내가 설명한 것을 수행하는 방법에 대한 다른 제안이 있다면 나는 그것에 대해 공개 할 것이고 매우 상세한 코드 응답이 가장 좋을 것입니다 만약에 가능하다면.

답변

0

난 그냥 사전에 배열을 채울 것, 즉

{ 
    { category = Animals, 
    name = Cat }, 
    { category = Vehicles, 
    name = Helicopter }, 
    { category = Foods 
    name = Pie }, 
    { category = Animals, 
    name = Zebra } 
}

및 그 배열에서 무작위로 선택합니다. 프로그래밍 예를 들어

:

theArray = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"Animals", @"category", @"Cat", @"name", nil], 
            [NSDictionary dictionaryWithObjectsAndKeys:@"Vehicles", @"category", @"Helicopter", @"name", nil], 
            // ... 
            [NSDictionary dictionaryWithObjectsAndKeys:@"Animals", @"category", @"Zebra", @"name", nil], 
            nil]; 

// ... 

randomDict = [theArray objectAtIndex:(rand() % [theArray count])]; 
NSString *name = [randomDict objectForKey:@"name"]; 
NSString *category = [randomDict objectForKey:@"category"]; 
+0

감사 멋지다 많이! – Regan

+0

이것을 사용하려고하면 "이니셜 라이저 요소가 상수가 아닙니다."라는 오류 메시지가 표시됩니다. "nil];" – Regan

+0

모든 중첩 된 비트와 쉼표를 정렬했는지 확인하십시오. 'theArray'에 대한 할당은 실제로 모든 하나의 긴 행입니다. – willc2

관련 문제