2010-07-21 2 views
1

plist 파일에서 일부 데이터를 가져 와서 UIButton 클릭에서 텍스트 필드에 표시하려고합니다. 아래의 코드는 데이터가 아니라 plist의 주소를 가져옵니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다plist에서 데이터 당기기

-(IBAction) buttonPress { 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"]; 
    NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:path]; 

    [myMessage setText:path]; 
} 
+0

나는 또한 경고 메시지를 받는다 : "unused variable array" – hanumanDev

+1

어레이가 사용되지 않는다는 경고를 받는다는 것에 놀라 는가? 코드를 보면 실제로 어디서나 사용할 수 있습니까? – Felixyz

답변

2

그래, 당신이 경로를 인쇄하고,없는 항목을 배열. 에 대한 질문에 대한 응답으로

-(IBAction) buttonPress { 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"messages" ofType:@"plist"]; 
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 

    [myMessage setText:[dict objectForKey:@"text"]]; 
} 

- 특정 텍스트를 호출 할 수 있도록 당신이 딕셔너리가 아닌 배열을 포함하여 PLIST을 변경할 수 있습니다

[myMessage setText:path]; 

또한

[myMessage setText:[array objectAtIndex:x]; //x = whatever index in the array contains your string. 

에 변경 arc4random. switch 문을 만들 수 있도록

은 열거 만들기 - 당신이 BTW 0과 1 개를-번호를 얻을 수 있도록
typedef enum { 
    MESSAGE1, 
    MESSAGE2, 
    MESSAGE3 
} messageIDs; 

다음 임의의 정수를 생성하고 X하여 MOD. (우리가 열거 내부 3 일, X = 3이이 경우, 이후)

int randomValue = arc4random() % 3; 

는 switch 문

switch (randomValue) { 
    case MESSAGE1: 
      [myMessage setText:[dict objectForKey:@"message1"]]; //or [myMessage setText:[array objectAtIndex:MESSAGE1]] 
    break; 
    case MESSAGE2: 
      [myMessage setText:[dict objectForKey:@"message2"]]; 
    break; 
    case MESSAGE3: 
      [myMessage setText:[dict objectForKey:@"message3"]]; 
    break; 
    default: 
    break; 
} 

이 작품 희망이 임의 INT를 사용합니다. 나는 전에 이것을 시도한 것을 havent ...

+0

이 작동합니다. 정말 고마워! 하나의 후속 질문 - 내가 plist에서 임의의 개체를 당기고 싶다면 arc4random() 함수를 사용할 수 있습니까? 그렇다면 어떻게 그 것이 [myMessage setText : [dict objectForKey : @ "text"]]; 다시 한 번 감사드립니다. – hanumanDev

+0

내 대답을 다시 확인하십시오. arc4random()에 도움을주기 위해 업데이트했습니다. 이 질문을 답변으로 표시하는 것을 잊지 마십시오 (작동하는 경우).) – jmont

0

정확히 무엇을 말합니까.

messages.plist 문자열의 배열을 포함 가정하면, 당신은 쉽게 배열의 마지막 항목을 얻을 수 있습니다 :

[myMessage setText:[array lastObject]]; 
+0

도움에 감사드립니다. 이제 완벽하게 작동하는 – hanumanDev