根据 KVC 指南,我正在尝试在 Python 中为我的模型类实现索引访问器方法。出于性能原因,我想使用可选的 ranged 方法一次加载多个对象。该方法需要一个指向 C 数组缓冲区的指针,我的方法需要将对象复制到该缓冲区中。我已经尝试过类似以下的方法,但它不起作用。我该如何做到这一点?
@objc.accessor # i've also tried @objc.signature('v@:o^@')
def getFoos_range_(self, range):
return self._some_array[range.location:range.location + range.length]
编辑: Apple 移动所有文档后,我终于找到了类型编码参考。读完之后,我尝试了这个:
@objc.signature('v@:N^@@')
def getFoos_range_(self, buf, range):
但这似乎也不起作用。第一个参数应该是指向 C 数组的指针,但长度直到运行时才知道,所以我不知道如何构造正确的类型编码。我'v@:N^[1000@]@'
只是想看看,那也没用。
我的模型对象绑定到驱动表视图的 NSArrayController 的 contentArray。它似乎根本没有调用此方法,可能是因为它期望的签名与桥提供的签名不同。有什么建议么?