Вот код:
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).
Когда я устанавливаю точку останова на операторе 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
.
stoneInt
дважды двумя разными способами? Сначала вы используете его как индекс вarray
, который дает вам словарь. Затем вы преобразуетеstoneInt
в строку и используете ее в качестве ключа в словаре. Это кажется действительно странным. - person rmaddy   schedule 01.11.2016NSString* string = array[[NSString stringWithFormat:@"%d", stoneInt]];
- person Anthony Shintoluggenprog   schedule 01.11.2016nil
для строки - person Anthony Shintoluggenprog   schedule 01.11.2016