Mengakses string dari plist menghasilkan nihil

Berikut kodenya:

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 berupa angka dari 0-59 (dalam kasus default, 11).

Ketika saya menetapkan breakpoint pada pernyataan return, stoneInt adalah 11 (Sebagaimana mestinya), namun string adalah nil. Apa yang saya lakukan salah?

Selain itu, saat saya menganalisis dic, terlihat dengan benar bahwa ia berfungsi dengan kunci 11 dan string Maze.


Berikut adalah kode sumber untuk 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>

ini berlangsung hingga string 59. String yang saya coba kembalikan (dalam kasus-kasus ini, mari kita ambil kasus 1) adalah "Lautan". Objek string saya selalu nil.


person Anthony Shintoluggenprog    schedule 01.11.2016    source sumber
comment
Mengapa Anda menggunakan stoneInt dua kali dalam dua cara berbeda? Anda pertama kali menggunakannya sebagai indeks ke array yang memberi Anda kamus. Anda kemudian mengubah stoneInt menjadi string dan menggunakannya sebagai kunci ke dalam kamus. Tampaknya sangat aneh.   -  person rmaddy    schedule 01.11.2016
comment
Saya tahu, awalnya saya menerima kesalahan ketika saya baru saja memiliki array string. Jadi ketika Anda membuat plist, dan Anda melihat Item 0, Item 1, dll., saya menggunakannya sebagai string dan menulis NSString* string = array[[NSString stringWithFormat:@"%d", stoneInt]];   -  person Anthony Shintoluggenprog    schedule 01.11.2016
comment
Apa pun yang terjadi, hasilnya tetap nil untuk string tersebut   -  person Anthony Shintoluggenprog    schedule 01.11.2016
comment
Tidak ada yang bisa membantu kecuali Anda memperbarui pertanyaan Anda dengan struktur daftar Anda yang menunjukkan nilai yang sebenarnya Anda coba dapatkan.   -  person rmaddy    schedule 01.11.2016
comment
Apakah hasil edit saya membantu?   -  person Anthony Shintoluggenprog    schedule 01.11.2016


Jawaban (1)


Saya minta maaf, ternyata nilai stoneInt sebenarnya kurang satu dari kunci yang saya coba akses. stoneInt adalah 11, tetapi kunci aksesnya diidentifikasi sebagai 12.

person Anthony Shintoluggenprog    schedule 01.11.2016