とこなつとこなつ

swift について勉強したことの忘備録とか

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 はもうお任せします…
もっといい方法あればご教授いただければと思います。