【问题标题】:create array of dictionaries from sqlite DB with FMDB使用 FMDB 从 sqlite DB 创建字典数组
【发布时间】:2012-03-11 10:17:32
【问题描述】:

我是 Objective-c 的新手,我正在尝试创建一个字典数组,以便在具有三列的 NSTableView 中查看它们。 sqlite DB 模式在名为“tbl1”的表中也有三列,“foo”、“bar”和“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"]);
    }

但是,我似乎无法创建单个 NSMutableDictionaries 数组,因此我可以将它们读入基于单元格的表格视图中。我能够用“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);

作为旁注,如果我想稍后更新数据库,我应该使用可变数组和可变字典吗?还是没关系,因为无论如何我都必须查询整个数据库才能刷新表视图? 任何关于如何使用三列 sqlite DB 填充三列 tableview 的建议都值得赞赏 - 以及对我对 FMDB 或 tableviews 理解的更正。

【问题讨论】:

    标签: objective-c cocoa sqlite fmdb


    【解决方案1】:
    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;
    

    应该给你字典数组

    【讨论】:

      【解决方案2】:

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

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

      在此处阅读 Apple 的 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 也应该有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-28
        • 2020-01-18
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        相关资源
        最近更新 更多