アプリイベントとユーザーのフィードバックを記録するために使用する単一のNSTextViewを含むStoryBoardを含むアプリケーションを開発しようとしています。メインビューからチェックボックススイッチからビューをロードします(コンソールログビューは、アプリケーションの起動時にデフォルトでオンになっています)。アプリケーションの起動とviewDidLoad()関数から期待どおりのテキストを扱う2番目のビューで、この時点までのすべての作業がうまく動作します。SWIFTのMacOSアプリケーションのコンソールログ機能にNSTextView/NSViewController NSNotificationが使用されました
コンソール・ログ・ビューのNSViewControllerクラスがある:ConsoleLogViewController
OF
class ConsoleLogViewController: NSViewController,NSTextViewDelegate {
@IBOutlet var textViewConsoleLog: NSTextView!
override func viewWillDisappear() {
(representedObject as! NSButton).isEnabled = true
(representedObject as! NSButton).state = NSOffState
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
textViewConsoleLog.delegate = self
textViewConsoleLog.string = "All new journal events are logged to this window"
textViewConsoleLog.string?.append("\n")
textViewConsoleLog.string?.append("*********************************************")
textViewConsoleLog.string?.append("\n")
textViewConsoleLog.string?.append("\n")
} // END OF viewDidLoad()
func addLogToConsoleWindow(newLogEntry: String) {
textViewConsoleLog.string? = (newLogEntry)
textViewConsoleLog.string?.append("\n")
} // END OF addLogToConsoleWindow()
} // ENDビューが(下の画像で 'コントロール' と命名)は、メインビューコントローラから起動されます
func showConsoleLogView() {
let buttonCall = chkBoxConsoleLog
performSegue(withIdentifier: "sequeConsoleView", sender: buttonCall)
} // END OF showConsoleLogView()
メインビューコントローラでは、ConsoleLogViewControllerのインスタンスを作成してから、この関数を試してみますaddLogToConsoleWindowを使用して、追加のログ情報をtextViewConsoleLogに追加します。メインビューコントローラのコードの関連するスニペットは、以下のとおりです。
let consoleOutputPrintStatement = ConsoleLogViewController() // Create an instance of ConsoleLogViewController to allow logging to the new console window
と
consoleOutputPrintStatement.addLogToConsoleWindow(newLogEntry: "Loading journal files")
しかし、私はアプリを実行すると、私はfatal error: unexpectedly found nil while unwrapping an Optional value
を取得したテキストの追加の行を記述しようとします。 textViewConsoleLogオブジェクトがnilであり、エラーを作成していることは明らかです。
私は、クラスの別のインスタンスを作成しているため、開始されていないtextViewConsoleLogオブジェクトに追加のテキストを追加しようとしているとします。私はちょうどNSTextViewを使用して、コンソールへのロギング機能を開発しようとして間違った道を見出しています -
だから:それは最初の実行時に
アプリはこのようになりますか?または、私は閉じるが、それを動作させるためにNSTextViewと異なるアプローチが必要なのだろうか?他のviewControllersから生成された関連する文字列でNSTextFieldのテキストを更新するにはどうすればよいですか?
何か助けや指導をいただければ幸いです。
タイトルは 'NSTextView'とロギングについてです。問題は 'NSViewController'です。 'NSViewController'エキスパートを引き付けるためにタイトルを変更してください。 – Willeke
'私はクラスの別のインスタンスを作成しています。えー、以前はその部分を逃しました。これはおそらく問題の原因です。はい。アウトレットは、この新しいインスタンスのものと関連付けられていません。 – Moritz
はいEric - ただし、segueによって作成されたインスタンスにどのように書き込むのですか?私は初心者としてこれにアプローチする方法を混乱/不確かです。 – Wolfstar