将List绑定到NSArrayController以在NSTableView中使用

时间:2014-09-19 05:48:51

标签: sqlite cocoa monomac xamarin.mac

我正在尝试创建一个非常简单的窗口,用于显示来自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不符合密钥值编码。

谢谢!

1 个答案:

答案 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/