0
nilをplistのリターンから文字列へのアクセスはここでは、コードは次のとおりは
NSString* filepath = [[NSBundle mainBundle]
pathForResource:@"Stones" ofType:@"plist"];
NSDictionary *stones = [NSDictionary dictionaryWithContentsOfFile:filepath];
NSArray* array = stones[@"StoneArray"];
NSDictionary* dic = array[stoneInt];
NSString* string = [[NSString alloc] init];
string = dic[[NSString stringWithFormat:@"%d", stoneInt]];
return string;
stoneInt
は0から59の数(デフォルトの場合には、11'S)です。
私はreturn
の文にブレークポイントを設定し、stoneInt
は(それがあるべきとおり)11で、まだstring
はnil
です。私は間違って何をしていますか?
また、私がdic
を解析すると、それは正しく11
のキーと文字列Maze
で動作していることを示しています。ここで
がPLISTのソースコードです:
<plist version="1.0">
<dict>
<key>StoneArray</key>
<array>
<dict>
<key>1</key>
<string>Ocean</string>
</dict>
<dict>
<key>2</key>
<string>Grass</string>
</dict>
これは文字列59.私は返すようにしようとしている文字列までになっている(これらのいずれかの場合に、のは、ケース1を見てみましょう) "海洋"。私のstring
オブジェクトは常にnil
です。
なぜ2つの異なる方法で 'stoneInt'を2回使用しますか?あなたはまず 'array'へのインデックスとしてそれを使い、あなたに辞書を与えます。 'stoneInt'を文字列に変換し、それを辞書にキーとして使用します。それは本当に奇妙に思える。 – rmaddy
私は文字列の配列があったときに最初にエラーを受け取りました。あなたがplistを作成し、 "Item 0、Item 1、etc."を見ると、それらを文字列として使用し、 'NSString * string = array [[NSString stringWithFormat:@"%d "、stoneInt]]; –
どちらの方法でも、文字列に 'nil'が残っています –