Я пытаюсь реализовать индексированный метод доступа для моего класса модели в Python, согласно the KVC guide. Я хочу использовать дополнительный метод дальнего действия, чтобы сразу загрузить несколько объектов по соображениям производительности. Метод берет указатель на буфер C-массива, который мой метод должен копировать в объекты. Я пробовал что-то вроде следующего, что не работает. Как это сделать?pyobjc проиндексированный метод доступа с диапазоном
@objc.accessor # i've also tried @objc.signature('[email protected]:o^@')
def getFoos_range_(self, range):
return self._some_array[range.location:range.location + range.length]
Редактировать: Я наконец-то нашел type encodings reference после Apple, переехал все документы. Прочитав это, я пробовал это:
@objc.signature('[email protected]:N^@@')
def getFoos_range_(self, buf, range):
но это, похоже, тоже не работало. Первый аргумент должен быть указателем на C-массив, но длина неизвестна до времени выполнения, поэтому я не знал точно, как построить правильную кодировку типа. Я попробовал '[email protected]:N^[[email protected]]@'
, чтобы посмотреть, и это тоже не сработало.
Мой объект модели привязан к контенту ContentArray NSArrayController, управляющего табличным представлением. По-видимому, он вообще не вызывает этот метод, возможно потому, что он ожидает другую подпись, чем та, которую предоставляет мост. Какие-либо предложения?