2012-02-20 83 views
0

我添加註釋到地圖,爲了給他們打電話,我需要他們的數據庫ID值存儲在一個字典在while循環添加到NSDictionary中

int i = 0; 
... 

while(sqlite3_step(statement) == SQLITE_ROW) { 

    int thisvenueid = sqlite3_column_int(statement, 4); 
    NSNumber *vid = [[NSNumber alloc] initWithInt:thisvenueid]; 

     if (dict == nil) { 
      dict = [[NSMutableDictionary alloc] init]; 
     } 
     [dict setObject:vid forKey:[NSNumber numberWithInt:i]]; 
} 

然後我使用它像這個:

[self.mapView selectAnnotation:[dict objectForKey:selectedVenue] animated:YES]; 

然而,這只是崩潰(Sigbart ..我怎麼不喜歡Sigbart)。我非常感謝任何建議。

+1

是否有更多的描述性錯誤輸出? – 2012-02-20 08:37:20

+2

由於您不會在循環中增加'i',因此鍵值始終爲0.也許這是您的問題。 – tilo 2012-02-20 08:44:54

回答

0

請參考文檔:

selectAnnotation:動畫: 選擇指定的標註,並顯示它的標註視圖。

- (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated 

參數 * 註釋 * 的註釋對象進行選擇。
動畫 如果是,則將標註視圖動畫到位置。
討論 如果指定的註釋不在屏幕上,因此沒有關聯的註釋視圖,則此方法不起作用。

0

你爲什麼用setObject?從什麼樣子,你應該使用addObject

[dict addObject: vid forKey: [NSNumber numberWithInt:i]]; 

原諒我,如果這不是問題 - 沒有用Objective-C的一段時間工作。您要選擇註釋並通過NSNumber而不是對象的MKPlacemark

+0

NSMutableDictionary沒有'addObject:forKey:'方法,所以這可能是他使用其他方法的原因。 – Chuck 2012-02-20 08:50:34