微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从设计时未知SQLite db动态显示数据到表视图

如何解决从设计时未知SQLite db动态显示数据到表视图

| 我正在尝试使用表视图显示通用sqlite表的内容用户在运行时选择一个sqlite文件(我在设计时不知道其结构)。然后,我可以提取数据库中所有可用表的列表,以及它们的结构(每个表中的字段和字段类型)和数据。 现在...如何在表格视图中显示它们? 我非常感谢Core Data,因此我正在尝试使用此框架。 我可以在“静态”通用核心数据模型中导入所有sqlite数据库。它具有三个实体:表,字段和值。 每个表对象与其字段具有一对多关系。 每个字段与其表中每一行的值具有多对多关系。 我知道这看起来很奇怪(并且我很乐意接受其他建议),但是它起作用了:无论数据库的结构如何,我都可以将所有sqlite数据库数据导入Core Data模型中。 为了向用户显示表中的数据,我应该“压缩”来自单个表视图中与表相关的字段和值的所有数据,其中每个字段都需要一列(更不用说格式化)现在,但是如果这样做有效,我应该能够将所有格式问题传递给NSFormatter。 我该如何实现? 换句话说:如何在表视图中以编程方式创建列并将其绑定到动态创建的数组控制器?     

解决方法

它看起来像CoreData在这里对您来说不是特别有用。有趣的是,您有一个表示任意数据库的通用CD模型,但是您似乎并没有使用或需要CoreData的最重要功能,例如持久性,撤消管理等。也就是说,在当前设置中,您可以通过实现tableView的dataSource方法/协议来轻松实现tableView的使用,而不是使用绑定或NSArrayController。 可以为此使用绑定,但是您必须在动态实例化自己的列上调用bind:方法。然后,您需要创建一个覆盖valueForKey:方法的对象,并动态查找所需的字段值。     ,我在当前项目中做了很多工作。 我实际上建立了一个模型/对象来保存我的SQLite数据。然后,我通过运行查询来提取数据,在循环中实例化我的模型对象,并将不同的列提取到它们的正确变量中。 然后,我将创建的每个对象添加到NSMutableArray中。我使用此Mutable数组在NSTableView中工作。 这非常简单而且超级快。我什至用这种方法完成了自动完成系统。 如果您需要/想要,我可以共享代码。     ,如果您想知道SQLite数据库中所有表的列表,可以执行:
select tbl_name from sqlite_master where type=\'table\';
并且,如果您知道表的名称,则可以通过执行以下操作获取有关其模式的信息:
pragma table_info(theTableName);
与往常一样,我建议使用Flying Meat Database包装器与SQLite数据库进行交互。这是一种操作SQLite文件中的信息的极好简单易用的方法。 至于以ѭ2形式显示信息,则很容易从tableView中删除所有列并添加新列,其中一个用于当前表中的每个字段。我自己完成了此操作,这很简单。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?