Есть ли способ использовать строки файла plist в инспекторе атрибутов раскадровки Xcode?

#xcode #plist #uistoryboardsegue #xcode-storyboard

#xcode #plist #uistoryboardsegue #xcode-раскадровка

Вопрос:

Я обнаружил, что мне приходится дважды объявлять одно и то же строковое значение для идентификаторов перехода:

  1. Один раз в коде для обработки логики перехода в моих заглушках prepare ()
  2. Один раз в инспекторе, чтобы установить идентификаторы перехода в раскадровке

Очевидно, что это открывает много потенциальных проблем с опечатками, а что нет между двумя строковыми значениями.

Что я хотел бы сделать, если это возможно, это определить мои идентификаторы перехода один раз в файле plist, а затем дважды ссылаться на одно и то же определение в двух местах, перечисленных выше. Конечно, я знаю, что в Swift можно ссылаться на значение plist, но возможно ли это в инспекторе атрибутов раскадровки?

Поле, которое я пытаюсь установить со значением PLIST

Ответ №1:

Я не думаю, что это возможно, но у меня есть две альтернативы для вас:

  1. Используйте что-то вроде R.swift. Этот инструмент проанализирует вашу раскадровку и создаст константы, которые вы можете использовать в коде

  2. Вместо того, чтобы идентифицировать переход по его идентификатору, сделайте это с помощью его целевого контроллера.

Пример:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let controller = segue.destination as? MyViewController {
      controller.value = self.value
    }
}
  

Лично я использую номер 2, я очень, очень редко читаю свойство name для segue

Комментарии:

1. Спасибо, ваше второе предложение звучит как лучший путь вперед. Однако мне это кажется небольшим упущением со стороны Apple.

2. Этот API был создан в Objective-C, который имеет менее строгую проверку типов, поэтому сравнение строк имело больше смысла. Вы также можете использовать его для различения двух переходов для просмотра контроллеров с одним и тем же классом, но с разными действиями или чем-то еще.