0

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

plist は「properties.plist」と呼ばれます。最初の辞書は「敵」と呼ばれます。これには、「SpriteType」と呼ばれる NSMutableString に保存された名前を持つ、さまざまな他の辞書が含まれています。数値の名前は「L - %d」という形式になり、%d は「LevelNumber」と呼ばれる整数になります。

可能であれば、情報を使用してその整数を取得する方法に関するコードと、上記の辞書の名前を教えてください。

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

前もって感謝します。

編集: わかりやすくするために、これは私の plist です。「SpriteNumber」と呼ばれる整数で必要なものは、「L - %d」の値と等しくなります

プロパティ.plist

4

2 に答える 2

2

plistの内容を辞書に読み込む場合(その方法は説明しませんが、これは私が頻繁に参照するチュートリアルです)、レベルのキーから文字列を取得するだけです。[[myDictionary objectForKey:@"key"]stringValue];。次に、NSStringを使用する-stringByReplacingOccurencesOfString:withString:と、「L-」の部分を取り除き、数値のみを取得するのに非常に役立ちます。最後に、。を使用して文字列から整数を取得し[myString intValue]ます。

于 2012-04-26T03:33:27.513 に答える
0

まあ、最も簡単な方法は次のようなものです:

-(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;
}

これはコンパイルされますが、実際のデータでテストされていません。

于 2012-04-27T15:52:09.383 に答える