2012-04-26 4 views
0

저는 plists를 처음 사용했기 때문에 실제로 사용해야합니다. 내가 가지고있는 것은 두 개의 사전 아래에 다른 숫자가 저장되어있는 plist입니다. 저장되어있는 번호를 가져와 정수로 만들어야합니다. 이 프로세스는 'readPlist'라는 메소드에서 실행됩니다..plist의 정수

plist는 'properties.plist'라고합니다. 첫 번째 사전은 '적'이라고합니다. 여기에는 'SpriteType'이라는 NSMutableString에 저장된 이름을 가진 여러 가지 다른 사전이 포함되어 있습니다. 숫자의 이름은 'L - % d'형식이며, % d는 'LevelNumber'라는 정수입니다.

가능한 경우 정보와 위의 사전 이름을 사용하여 정수를 가져 오는 방법에 대한 코드를 누군가에게 줄 수 있습니까?

나는 plists에 액세스하는 방법을 둘러 보았지만 사람들이 보여준 코드는 작동하지 않습니다.

미리 감사드립니다.

편집 : 너무 이해하기 쉽도록, 이것은 내 plist입니다. '- % d 개 L'

properties.plist

답변

2

당신이 사전에 당신의 plist의 내용을 읽어 보면 (내가 말할 수 없습니다 내가 뭘 'SpriteNumber'라는 정수에 원하는 것은의 값과 동일합니다 당신은 그것을하는 방법,하지만 this 자주 참조하는 자습서), 그때 열쇠의 문자열을 [[myDictionary objectForKey:@"key"]stringValue];와 함께 점점 문제입니다. 그런 다음 NSString의 매우 유용한 -stringByReplacingOccurencesOfString:withString:을 사용하여 "L -"부분을 없애고 숫자 값만 가져옵니다. 마지막으로 [myString intValue]으로 문자열에서 정수를 가져옵니다. 이 컴파일하지만 실제 데이터로 테스트하지

-(int) getMosquitoCountForLevel:(int) level { 
    int mosquitoCount=0; 
    NSString *gsFile = @"whateverFullyQualifiedFileNameYourPlistIs"; 
    NSDictionary* definitions = [NSDictionary dictionaryWithContentsOfFile:gsFile]; 
    NSDictionary* mosquitos = [definitions objectForKey:@"Mosquito"]; 
    if(mosquitos) { 
     NSString *levelKey = [NSString stringWithFormat:@"L - %d",level]; 
     NSNumber *mosquitoCountAsNumber = [mosquitos objectForKey:levelKey]; 
     if(mosquitoCountAsNumber) { 
     mosquitoCount=[mosquitoCountAsNumber intValue]; 
     } else { 
     CCLOGERROR(@"%@ - Mosquito definitions in %@ does not contain a en entry for level %@.",self.class,gsFile,levelKey); 
     } 
    } else { 
     CCLOGERROR(@"%@ - file %@ does not contain a Mosquito dictionary.",self.class,gsFile); 
    } 
    return mosquitoCount; 
} 

: 뭔가처럼

+0

방금 ​​이미지를 추가하여 원하는 부분을 약간 더 선명하게 만들었습니다. – akuritsu

+0

아! 그래서 열쇠는'L - % d'이고 객체는 이미 정수입니다. 그건 네 인생을 좀 더 편하게 해줄거야, 친구. – CodaFi

+0

그래, 코드가 있지만 부분은 SpriteNumber = [[저장된 재고 objectForKey : @ "L - % d", LevelNumber] intValue]; LevelNumber에 '메서드 호출이 너무 많습니다. 예상 한 1, 2가 있습니다.'라는 오류가 발생합니다. 이 문제를 해결하는 방법을 알고 있습니까? – akuritsu

0

아니라, 가장 쉬운 방법 일 것이다.

+0

그래서 내가 원하는 번호를 모기 수라고 부릅니까? – akuritsu

+0

예, 예를 들어이 메서드는 위의 plist를 사용하여 15,16 및 17 수준의 정수 9를 반환합니다. – YvesLeBorg