将 NSArrayController 与 NSTableview 方法“objectValueFor”结合起来

发布于 2025-01-12 21:27:54 字数 327 浏览 1 评论 0原文

我可以将 NSArrayController 用于我的表视图,并同时使用此方法吗:?

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?

背后的想法:
我不想失去数组控制器的好处(插入、更新、删除...),但我想控制要显示的其他列。这些列中的信息经过计算和格式化;值来自数组控制器管理的数组(核心数据)。

恐怕这是不可能的,因为控制器和 tableviewfunction 相互排斥......

Can I use NSArrayController for my tableview , and using simultaneously this method : ?

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any?

The idea behind:
I do not want to loose the benefits of the arraycontroller ( insert, update, delete ...) but I would like to have control on additional columns to display. The information inside these columns are calculated and formatted; values are coming from the array that the arraycontroller manages (Core Data).

I am afraid this is not possible because controller and tableviewfunction excludes each other ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的背包 2025-01-19 21:27:54

感谢 Willeke,我终于通过使用我的实体的扩展来完成它。

extension ImportLog {
 
    // Splits the imported lines into individual words

    // For each entity, I split the property "line" .
    // Later, in the objc computed property, I pick column number x

    var splittedText:[String.SubSequence]{
        return(self.line!.split(separator: ";"))
    }
    
    // col1
    @objc var f1: String {
        get {
            let theColumn = 0
            var text:String = ""
            if ( splittedText.count-1 >= theColumn) {
                text = String(splittedText[theColumn])
            }
            return text
        }
        set {
            // no need to set something
        }
    }
 }

实体的计算属性“f1”现在可以绑定在 XIB 文件中
通过“表格单元格 View.objectValue.f1”

在此处输入图像描述

Thanks to Willeke, I got it made finally by using a extension for my entity.

extension ImportLog {
 
    // Splits the imported lines into individual words

    // For each entity, I split the property "line" .
    // Later, in the objc computed property, I pick column number x

    var splittedText:[String.SubSequence]{
        return(self.line!.split(separator: ";"))
    }
    
    // col1
    @objc var f1: String {
        get {
            let theColumn = 0
            var text:String = ""
            if ( splittedText.count-1 >= theColumn) {
                text = String(splittedText[theColumn])
            }
            return text
        }
        set {
            // no need to set something
        }
    }
 }

The computed property "f1" of the entity can now be bound in the XIB file
by "Table Cell View.objectValue.f1"

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文