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
この投稿へのコメント