加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 将数据解析为NSTableView

发布时间:2020-12-14 02:27:28 所属栏目:百科 来源:网络整理
导读:程序员大家好, 首先,我是OSX / iOS编程的新手,我正在努力学习swift.我在java方面相当称职,并希望自学一些新东西.我知道swift编程语言处于早期阶段. 我有一个使用parse.com数据浏览器的表.我可以从该表中获取元素并将它们存储在一个数组中.通常,在java中,我会
程序员大家好,

首先,我是OSX / iOS编程的新手,我正在努力学习swift.我在java方面相当称职,并希望自学一些新东西.我知道swift编程语言处于早期阶段.

我有一个使用parse.com数据浏览器的表.我可以从该表中获取元素并将它们存储在一个数组中.通常,在java中,我会简单地迭代这些元素并填充JTable.现在,我的问题是……我将如何做到这一点?我试过读苹果api,我觉得我的智商下降了.我可以理解getNumberOfRows函数/方法,但其他函数对我来说毫无意义.我的xib文件中有一个NSTable,并且将委托和数据源放在app委托文件中.如何设置标识符以便我可以开始设置信息.

我知道我并没有真正帮助,但我非常感谢任何建议.

谢谢.

是的,Cocoa的tableviews很复杂.

在tableview中获取内容的绝对基础是设置其数据源,该数据源必须采用NSTableViewDataSource协议.然后,您必须区分基于视图和基于单元格的tableview.在基于视图的视图中,您可以使用在Interface Builder中设计的视图,基于单元格的视图更古老,更简单.您了解numberOfRowsInTableView函数,因此我继续使用更复杂的函数.

基于细胞的TableVies

对于基于单元格的tableViews,第二个基本函数## Heading ##是

func tableView(tableView: NSTableView!,objectValueForTableColumn tableColumn: NSTableColumn!,row: Int) -> AnyObject!

当你得到它,它很容易.作为第一个参数,您可以获得tableView(仅当您为多个tableView使用相同的dataSource时才会感兴趣).
第二个指定tableColumn.您可以使用其标识符来标识列.您在InterfaceBuilder中设置此标识符.单击您的tableview直到选中一列.然后在侧栏中设置Restoration ID.
作为最后一个参数,你得到你的行.您返回AnyObject类型的对象.我通常会返回一个字符串,我不知道NSNumber是否也有效.
一个简单的示例实现如下:

func tableView(tableView: NSTableView!,row: Int) -> AnyObject!{
    var result = ""

    var columnIdentifier = tableColumn.identifier
    if columnIdentifier == "number" {
        result = "(row+1)"
    }
    if columnIdentifier == "name" {
        result = model.persons[row].name
    }
    if columnIdentifier == "lastName" {
        result = model.persons[row].lastName
    }
    return result
}

如果要设置值,请使用

func tableView(tableView: NSTableView!,setObjectValue object: AnyObject!,forTableColumn tableColumn: NSTableColumn!,row: Int)

Object表示应传输到数据模型的新值.

基于视图的TableViews

在基于视图的tableViews中,事物有所不同.

在这里,您必须在单独的nib文件中设计自定义视图.然后,在初始化程序中注册nib.

let nib = NSNib(nibNamed: "Example",bundle: NSBundle.mainBundle())
        self.tableView.registerNib(nib,forIdentifier: "Example")

这允许您使用makeViewWithIdentifier:owner创建视图的实例:
然后你可以配置你的视图(我喜欢为此子类NSView)并将其作为结果传回

func tableView(tableView: NSTableView!,viewForTableColumn tableColumn: NSTableColumn!,row: Int) -> NSView!

示例实现:

func tableView(tableView: NSTableView!,row: Int) -> NSView!{
    let view = tableView.makeViewWithIdentifier("Example",owner: self) as MyCustomView
    view.field1.stringValue = model.persons[row].name
    view.field2.stringValue = model.persons[row].lastName
    view.field3.stringValue = "(row+1)"
    return view
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读