~ / .ssh / known_hosts: Нет такого файла или каталога - использование переменной в пути к команде [duplicate]

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

Я написал сообщение в блоге об этом некоторое время назад: Общий код модели , Ниже приведен краткий обзор:

Общие данные

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

  • Итерация с принудительной передачей на контроллерах представления (в навигаторе или панели управления панелью) для установки данных
  • Установите данные в файле подготовки (если раскадровки) или init (если программно)

Поскольку подготовка к segue является наиболее распространенной, здесь приведен пример:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var next = segue.destinationViewController as NextViewController
    next.dataSource = dataSource
}

Независимый доступ

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

Наиболее распространенный способ, которым я видел это, - это экземпляр singleton . Поэтому, если ваш объект singleton был DataAccess, вы можете сделать следующее в методе viewDidLoad для UIViewController:

func viewDidLoad() {
    super.viewDidLoad()
    var data = dataAccess.requestData()
}

. Существуют дополнительные инструменты, которые также помогают передавать данные:

  • Замечание о ключевом значении
  • NSNotification
  • Основные данные
  • NSFetchedResultsController
  • Источник данных

] Основные данные

Хорошая вещь в Core Data заключается в том, что она имеет обратные отношения. Поэтому, если вы хотите просто предоставить NotesViewController объект заметок, который вы можете использовать, поскольку он будет иметь обратную связь с чем-то другим, например, с ноутбуком. Если вам нужны данные на ноутбуке в NotesViewController, вы можете вернуться к графику объекта, выполнив следующие действия:

let notebookName = note.notebook.name

Подробнее об этом читайте в моем сообщении в блоге: Общий код модели

1
задан Cpt Homefield 28 August 2015 в 17:45
поделиться

1 ответ

В руководстве bash обратите внимание, что расширение скобки во время замены параметра , но не рекурсивно:

Порядок расширений: расширение скобы; расширение тильды, расширение параметров и переменных, арифметическое расширение и подстановка команд (выполняется слева направо); расщепление слов; и расширение имени файла.

Это означает, что любая тильда (или ссылки на параметры или подстановка команд), хранящаяся нерасширенной в переменной bash, не будет автоматически разрешать . Ваша переменная JAVA_HOME содержит литеральную тильду, поэтому bash не будет автоматически расширять ее.

Вероятно, ваше исправление работало, потому что расширение тильды не применяется в кавычках:

$ echo "~"
~
$ echo ~
/home/jeffbowman

. .. но расширение параметра, подобное $HOME, происходит в кавычках. Замена его с помощью $ HOME расширяется до вашего домашнего каталога во время назначения JAVA_HOME .

FOO=~/bar        # stores /home/jeffbowman/bar
FOO="~/bar"      # stores ~/bar
FOO=$HOME/bar    # stores /home/jeffbowman/bar
FOO="$HOME/bar"  # stores /home/jeffbowman/bar

Хотя лучший вариант заключается в том, чтобы обеспечить правильное назначение, если вы хотите расширить это вручную, эти вопросы SO имеют некоторые хорошие варианты:

6
ответ дан Community 5 September 2018 в 10:27
поделиться
Другие вопросы по тегам:

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