2014-12-19 89 views
-3

我從數據庫中讀取4個字段並將它們存儲在NSMutableDictionary中。每條記錄都存儲在一個NSMutableArray中。到現在爲止還挺好。NSMutableArray訪問NSMutableDictionary

我有函數(沒有源),需要一個NSArray(描述字段)發送給它。我試圖找到一種方法,從字典中發送第二個字段,就好像它是一個NSArray一樣。另一種方法是我可以創建一個新的NSArray並將其複製到這個函數中,這看起來很浪費。

這裏是我用來讀取數據庫的代碼:

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 

    nf_myData = [[NSMutableArray alloc] init]; 

    while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 

     Descr = [ GetText:"Description" cs:compiledStatement]; 

     ID = [ GetText:"_id" cs:compiledStatement]; 
     Wt = [ GetText:"Weight" cs:compiledStatement]; 
     deflt = [ GetText:"deflt" cs:compiledStatement]; 

     NSMutableDictionary *nf_myRow = [[NSMutableDictionary alloc] init]; 


     [nf_myRow setObject:Descr forKey:@"Description"]; 
     [nf_myRow setObject:ID forKey:@"ID"]; 
     [nf_myRow setObject:Wt forKey:@"Weight"]; 
     [nf_myRow setObject:deflt forKey:@"deflt"]; 

     [nf_myData addObject:nf_myRow]; 
+0

你別無選擇。用你想要的值創建第二個數組。 – rmaddy 2014-12-19 01:07:11

+0

「字典中的第二個字段」是什麼意思?你的意思是你想提取任何「ID」? – matt 2014-12-19 01:32:21

+0

ID或任何「字段」是必要的,基本上能夠通過NSarray只是爲了一個對象 – 2014-12-19 04:50:31

回答

2

使用鍵 - 值編碼:

NSArray* arr = [nf_myData valueForKey: @"ID"]; 

(或任何赫克你認爲你所說的「第二場」的意思)。

+0

這裏是我對鍵值編碼的討論:http://www.apeth.com/iOSBook/ch12.html#_key_value_coding_2 – matt 2014-12-19 01:39:04

+0

我不知道你可以訪問字典,基本上發送它像一個C中的指針。我只是直接發送[nf_myData valueForKey:@「ID」]到該函數,它運作良好。謝謝! – 2014-12-19 15:37:18

+0

不確定你的意思是「像C中的指針」。目標C _is_ C. Objective-C對象引用_is_是C中的指針。你的字典'nf_myRow' _is_是C中的指針。它所「包含」的所有對象都是C中的指針。數組,字典:它們只是集合的指針。他們是非常便宜,輕量級的東西。這就是你原來的問題很奇怪的原因。 「包含與字典相同對象的新NSArray」不是「浪費」;它幾乎沒有任何開銷。 – matt 2014-12-19 18:17:42

相關問題