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
.
stoneInt
dua kali dalam dua cara berbeda? Anda pertama kali menggunakannya sebagai indeks kearray
yang memberi Anda kamus. Anda kemudian mengubahstoneInt
menjadi string dan menggunakannya sebagai kunci ke dalam kamus. Tampaknya sangat aneh. - person rmaddy   schedule 01.11.2016NSString* string = array[[NSString stringWithFormat:@"%d", stoneInt]];
- person Anthony Shintoluggenprog   schedule 01.11.2016nil
untuk string tersebut - person Anthony Shintoluggenprog   schedule 01.11.2016