2014-12-19 95 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

相关问题