使用FMDB从sqlite DB创建字典数组



我是objective-c的新手,我正在尝试创建一个字典数组,以便在具有三列的NSTableView中查看它们。sqliteDB模式在一个名为"tbl1"的表中也有三列,"foo"、"bar"one_answers"foobar"。我使用FMDB作为包装器,我可以成功地进行编写和查询。

我可以用这个为整个数据库创建一个数组:

FMResultSet *rs = [db executeQuery:@"select * from tbl1"];

我可以用这个创建一个字典:

dict = [[NSMutableDictionary alloc] init];
[dict setObject: @"baz"        
      forKey: @"foo"];

读取数据库中的每一项工作:

while ([rs next]) {
    NSLog(@"%@, %@, %@", 
          [rs stringForColumn:@"foo"],
          [rs stringForColumn:@"bar"],
          [rs stringForColumn:@"foobar"]);
    }

然而,我似乎无法创建一个NSMutableDictionary数组,这样我就可以将它们读取到基于单元格的表视图中。我能够用"foo"的值填充一个带有标识符"foo"的列,然而,这只是通过从SQL查询中生成一个"foo"项的数组:

FMResultSet *rs = [db executeQuery:@"select * from tbl1"];
    while([foo next]) {
        NSString *thisFoo = [foos stringForColumn:@"foo"];        
        [_foos addObject:[NSString stringWithFormat:@"%@", thisFoo]];
    }
    NSLog(@"Foos: %@", _foos);

顺便说一句,如果我以后想更新DB,我应该使用可变数组和可变字典?还是没关系,因为我无论如何都必须查询整个DB才能刷新表视图?关于如何用三列sqlite DB填充三列表视图的任何建议,以及对我对FMDB或表视图的理解的更正,都将不胜感激。

FMResultSet *rs = (FMResultSet*)[db executeQuery:@"select * from tbl1"];
NSMutableArray *totalArray = [[[NSMutableArray alloc]init]autorelease];
while ([rs next]) {
dict = [[NSMutableDictionary alloc] init];
[dict setObject:[rs stringForColumn:@"foo"] forKey:@"COL1"];
[dict setObject:[rs stringForColumn:@"bar"] forKey:@"COL2"];
[dict setObject:[rs stringForColumn:@"foobar"] forKey:@"COL3"];
[totalArray addObject:dict];
[dict release];
}
return totalArray;

应该为您提供字典数组

Rick,你的问题对我来说没有多大意义。请编辑它,清楚地表明你的确切问题是什么。

对于FMDB,请查看此处给出的示例代码:https://github.com/ccgus/fmdb/zipball/master

在此处阅读苹果的NSTableViewDelegate协议文档:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTableViewDelegate_Protocol/Reference/Reference.html

此示例代码:https://developer.apple.com/library/mac/#samplecode/CocoaTipsAndTricks/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010039也应该有所帮助。

最新更新