swift と objective-c では setter の書き方が違うらしい
swift でセッターを用意したときのこと。
以下のようなコードを書いたんだけど
var str: NSString! func setStr(inputStr:NSString) { self.str = inputStr }
するとこんなエラーが。
Method 'setStr' with Objective-C selector 'setStr:' conflicts with setter for 'str' with the same Objective-C selector
調べてみると swift の setter の書き方はどうも違うらしい。
以下のように書き換えてみた。
var str: NSString!{ set(inputStr){ } }
またこんなエラーが
Variable with a setter must also have a getter
setter 使うなら getter も設定してねとのことっぽい。言われるままに getter も追加した。
またまた以下に修正した
var str: NSString!{ set(inputStr){ _str = inputStr } get { return _str } }
これも怒られる。
Use of unresolved identifier '_str'
swift は内部的に _xxxx といったのを作ってくれないっぽいですね。
結局以下のようなコード書いたんだけど、こんなことしないといけないんですかね?
var tmpStr: NSString = "" var str: NSString!{ set(inputStr){ tmpStr = inputStr } get { return tmpStr } }
だったら set とか get はもうお任せします…
もっといい方法あればご教授いただければと思います。