Xcode 7/Swift 2.2のMac OS XプロジェクトをXcode 8/Swift 3に移行しています。私はView ControllerクラスでundoManagerを使用して問題に遭遇しました。 MyViewController:機能を元に戻します。Swift 3でNSUndoManagerと.prepare(withInvocationTarget :)を使用する
Xcodeで7 /スウィフト2.2、これはうまく働いた:
if let target = undoManager?.prepare(withInvocationTarget: self) as? MyViewController {
target.undo(data, moreData: moreData)
undoManager?. setActionName("Change Data")
}
:
は
undoManager?.prepareWithInvocationTarget(self).undo(data, moreData: moreData)
undoManager?.setActionName("Change Data)
Xcodeで8は/スイフト3、https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html
から推奨パターンを使用してこのように変更する必要があり
しかし、MyViewControllerへのダウンキャストは常に失敗し、取り消し操作は登録されません。
私はここで何かが分かりませんか、これはバグですか?
ありがとうございました。私もそれを周りに遊んだ。残念ながら、それはOS10.10と互換性がありませんが、おそらくその上に移動する時間です。 – jbaraga
OS 10.10の解決策: 'registerUndo(with:Target:selector:object:)'を使用してください。単一の値を保存するのに問題はありません。複数の値を保存するには、それらを辞書にパックし、それを「オブジェクト」パラメータに使用します。元に戻す操作のために、私は辞書から解凍します。 – jbaraga
@jbaraga、ご報告いただきありがとうございます。しかし、なぜそれを別の答えとして投稿しないのですか? 10.10で作業する必要がある開発者にとっては、何らかの助けになるかもしれません。 – OOPer