【发布时间】:2010-11-25 11:26:09
【问题描述】:
我正在尝试根据the KVC guide 在 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 移动所有文档后,我终于找到了type encodings reference。读完之后,我尝试了这个:
@objc.signature('v@:N^@@')
def getFoos_range_(self, buf, range):
但这似乎也不起作用。第一个参数应该是指向 C 数组的指针,但长度直到运行时才知道,所以我不知道如何构造正确的类型编码。我尝试'v@:N^[1000@]@' 只是为了看看,但也没有用。
我的模型对象绑定到驱动表视图的 NSArrayController 的 contentArray。它似乎根本没有调用此方法,可能是因为它期望的签名与桥提供的签名不同。有什么建议吗?
【问题讨论】:
标签: python cocoa pyobjc key-value-coding