2012-04-26 7 views
0

私はplistsを使い慣れていて、実際に使う必要があります。私が持っているのは、2つの辞書の下に異なる数字が格納されているplistです。私は格納されているその番号を取得し、それを整数にする必要があります。このプロセスは 'readPlist'というメソッドから実行されます。整数から.plist

plistは 'properties.plist'と呼ばれます。最初の辞書は「敵」と呼ばれています。それは、 'SpriteType'と呼ばれるNSMutableStringに格納されている名前を持つさまざまな他の辞書を含んでいます。数字の名前は 'L - %d'の形式で、%dは 'LevelNumber'という整数です。

可能であれば、上記の情報と上記の辞書の名前を使用して、整数を取得する方法に関するコードを誰かに教えてもらえますか?

私はplistsにアクセスする方法を調べましたが、人々が示したコードは機能しません。

ありがとうございます。

編集:あまりにもわかりやすいように、これは私のplistです。何iは整数にしたい、の値に等しくなるように「SpriteNumber」と呼ばれる - あなたが辞書にあなたのplistの内容を読めば(私は教えてくれません「L%のD」

properties.plist

答えて

2

あなたはそれを行う方法ですが、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

Okだから、私はコードを持っているが、その部分にある: SpriteNumber = [[storedStock objectForKey:@ "L - %d"、LevelNumber] intValue]; LevelNumberに 'メソッド呼び出しが多すぎると予想され、1が2です。'というエラーが表示されます。 これを修正する方法を知っていますか? – akuritsu

0

だけでなく、最も簡単な方法は、ようなものになるだろう。

+0

そして、私が望む番号は蚊と呼ばれていますか? – akuritsu

+0

はい、たとえば、このメソッドはレベル15,16、および17の整数9を返します。上記のplistを使用します – YvesLeBorg