我正在使用S7Graphview編寫iPhone應用程序,並且我已將一些日期和結果保存爲.plist,作爲字典中的鍵和值,都是字符串。我的plist中看起來是這樣的:循環訪問字典;爲什麼我不按字母順序獲取鑰匙?
<dict>
<key>2011-05-11</key>
<string>23</string>
<key>2011-05-12</key>
<string>23</string>
<key>2011-05-13</key>
<string>23</string>
<key>2011-05-14</key>
<string>43</string>
<key>2011-06-14</key>
<string>43</string>
</dict>
然後我用這個循環,這些值加載到graphview:
NSMutableDictionary* dictionary = [[NSMutableDictionary alloc]init];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
int i = 1;
if ([dictionary count] > 0) {
for (NSString* key in dictionary){
NSString* verdiString = [dictionary objectForKey:key];
CGFloat verdi = [verdiString intValue];
NSDate *dato = [[NSDate alloc]init];
NSLog(@"key=%@ value=%@", key, [dictionary objectForKey:key]);
dato = [self stringTilDato:key];
[items.list_ addObject:[[GraphInfo alloc] initWithID:i name:verdiString value:verdi date:dato]];
i++;
}
}
的「stringTilDato」方法可轉換日期字符串到一個NSDate的。這些值被加載到items.list中,但順序錯誤!該報告的NSLog:
key=2011-05-14 value=43
key=2011-05-13 value=23
key=2011-05-12 value=23
key=2011-06-14 value=43
key=2011-05-11 value=23
key=2011-05-14 value=43
key=2011-05-13 value=23
key=2011-05-12 value=23
key=2011-06-14 value=43
key=2011-05-11 value=23
(不知道爲什麼它會通過按鍵兩次,順便說一句,但我dont't認爲這很重要)。我認爲鑰匙可以按字母順序閱讀,或至少按照plist的順序閱讀。爲什麼plist會按照這個順序加載到字典中,還是我的加載循環是問題?
希望有人可以幫我:)
謝謝!我嘗試從字典中獲取所有密鑰,將它們轉換爲日期,然後對數組進行排序。然後循環使用排序數組的順序字典是在做的伎倆! – Jambaman 2011-06-15 15:37:38