我正在尝试创建一个非常简单的窗口,用于显示来自Sqlite3数据库的项目列表。我有一个我的对象的通用列表,我想将它绑定到窗口上的控件。这样做的最佳方式是什么?
如果是.NET窗体,我会这样做,Cocco的等价物是什么? myBindingSource.DataSource = new List<MyObject>();
我的ViewController.cs代码目前如下所示:
List<MyObject> dataSource = DataStore.GetLibraries();
public override AwakeFromNib() {
base.AwakeFromNib();
dataSource = GetMyObjects();
myArrayController.Bind("contentArray", this, "dataSource", null); // Throws error
}
但这会引发错误:此类与密钥DataSource不符合密钥值编码。
谢谢!
答案 0 :(得分:0)
将libsqlite3.dylib链接到您的框架(General:Linked Frameworks and Libraries)并将数据库文件添加到项目后,您将创建一个sqlite访问器类,以执行数据库连接并启用查询。
如果您的项目也应保存到数据库中,那么在安装时,数据库必须放在您也具有写访问权限的位置,这将位于&#34; Documents&#34; -folder for iphone app或者在&#34;应用程序支持&#34;在MacOS X上,但不在应用程序包本身。 (注意不要弄乱所有者名称,否则只有root或你有写访问权限而你的客户赢了)
要将查询结果连接到似乎是问题核心的Array-Controller,查询的输出需要根据Apple的KVC规则进行格式化。这是通过创建NSDictionary(带有对象和键)并设置数组控制器来从此字典读入来完成的。
我很遗憾地删除了我在自己的项目中工作的链接,但我找到了两个教程,如果您觉得需要更多详细信息,请为您提供必要的函数调用: a)对于sqlite连接:http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_4_iPhone_Application_(Xcode_4) b)用于连接NSArrayController和Dictionary: http://ihoneylocust.wordpress.com/2013/02/19/first-mac/