Swift3 if letのオブジェクトのプロパティへは代入できない

昔作ったmacosのアプリケーションを、 リファクタリングも半分兼ねてDocument-Basedで書き直している。

swiftでよく使う、nilかもしれないオブジェクトのアンラップ:

if let obj = nilableobj {
    // executed successfully
    obj.doSomething()

    // cannot assign to property: obj is a let constant
    obj.someValue = newValue
}

で、objのプロパティを変更できないことに気づいた。if letをif varで変更可能になる。

if var obj = nilableobj {
    obj.someValue = newValue
}

nilableobjのsomeValueプロパティの値が変更されていることを確認した。

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

posted with amazlet at 17.05.08

石川 洋資 西山 勇世
技術評論社
売り上げランキング: 19,129

Amazon.co.jpで詳細を見る

詳解Swift 第3版

詳解Swift 第3版

posted with amazlet at 17.05.08

荻原 剛志
SBクリエイティブ
売り上げランキング: 115,386

Amazon.co.jpで詳細を見る