viva CocoaさんのコードサンプルCurrency Converter Bindingsにおけるアップデート内容

主題
viva CocoaさんのXcodeとSwiftで作るMac OS Xアプリ開発の第28章Currency Converter Bindingsにおけるコードサンプルについて、アップデートした内容を説明する。

背景
今まで3個のmacOS用アプリを公開してきた。しかしながら、その多くにおいて取ってきた手法は、Web上に公開されているサンプルコードを組み合わせるというものだった。この辺りで軌道修正したいと思いつつも、新しいアプリでもサンプルコードを求める癖は抜けなかった。
そこで見つけたのがviva CocoaさんのXcodeとSwiftで作るMac OS Xアプリ開発の最終章にあるMemo Padであった。そこから逆にリンクを辿ってたどり着いたコンテンツはかなり体系的に整理されているようだった。これはうってつけだと思い、第1章から勉強し直すことにした。だが考え方は今でも全く問題なく通じるものの、掲載のコードサンプルにdeprecateされた内容などがあり、アップデートが必要なことが分かった。

コードサンプル
変更点は、コメントにて説明している。

        import Cocoa

        class Converter: NSObject {

            /*
            変数と関数に@objcコンパイラディレクティブをつける。つけないと、Objective-C
            (Cocoa−Bindings)側から見えない。→ブランクウインドウになる。
            https://ja.stackoverflow.com/a/66277/516
            */
            @objc dynamic var exchangeRate:Double = 0.0
            @objc dynamic var dollarsToConvert:Double = 0.0

            @objc func amountInOtherCurrency() ->Double {
                return self.exchangeRate * self.dollarsToConvert
            }

            // keyPathsForValuesAffectingValueForKey(key:)から
            // keyPathsForValuesAffectingValue(forKey key:)に変更
            override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
                if key == "amountInOtherCurrency" {
                    return Set<String>(arrayLiteral: "exchangeRate", "dollarsToConvert")
                } else {
                    return super.keyPathsForValuesAffectingValue(forKey: key)
                }
            }
        }
    

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL