guardとオプショナルバインディングを行うというとguard let
というイメージが強かったのですが、guard var
という書き方もできるようです。
var hoge: String? = "hoge"
hoge = "hogehoge"
print(hoge)
# => Optional("hogehoge")
guard var str = hoge else {
return
}
print(str)
# => hogehoge
str = "String"
print(str)
# => String
The Swift Programming Language (Swift 2.1)の中でもguard var
という書き方をしている部分があるので、この書き方は大丈夫なのではないかと思われます。