Изменить свойства CALayer: EXC_BAD_INSTRUCTION

Вы можете явно определить поле и ссылку на поле с помощью аргумента name :

class BooksListFilter(df.FilterSet):
  new_name = df.CharFilter(name='name')
  class Meta:
    model = Books
    fields = ['new_name']

1
задан user29809 18 January 2019 в 19:48
поделиться

1 ответ

Сообщение об ошибке как бы подсказывает вам одно решение: внедрите init(layer:) в CPCoursePointLayer.

Когда вы устанавливаете свойство для слоя, и этот слой находится в дереве слоев не скрытого окна, Core Animation ищет CAAction для этого свойства, отправляя сообщение actionForKey: к слою. Если этот поиск возвращает nil, Core Animation создает неявную анимацию для свойства, используя некоторые параметры по умолчанию.

Любой слой с прикрепленной анимацией имеет соответствующий уровень представления. (Прочитайте Деревья слоев отражают различные аспекты состояния анимации для получения дополнительной информации.) Поэтому Core Animation необходимо создать соответствующий слой представления для вашего hitLayer. Это делается с помощью инициализатора init(layer:) в вашем классе CPCoursePointLayer.

В Swift класс не наследует автоматически все конструкторы своего суперкласса, поэтому ваш класс CPCoursePointLayer не имеет этого инициализатора. Итак, ваше приложение вылетает.

Одним из решений является добавление инициализатора init(layer:) в ваш класс CPCoursePointLayer:

init(layer: CALayer) {
    let layer = layer as! CPCoursePointLayer
    // copy any custom properties from layer to self here
    super.init(layer: layer)
}

Если вы определите init(layer:), то вы можете анимировать свойства вашего слоя и позволить им быть неявно анимированный.

Если вы никогда не планируете явно или неявно анимировать свойства вашего слоя, вы можете вместо этого отключить неявную анимацию, возвращая NSNull, когда Core Animation ищет действие, например, добавив этот метод в ваш класс CPCoursePointLayer:

override class func defaultAction(forKey key: String) -> CAAction? {
    return unsafeBitCast(NSNull(), to: CAAction?.self)
}
0
ответ дан rob mayoff 18 January 2019 в 19:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: