iOSで開発をしていると、たまに”Expression is not assignable.”エラーに遭遇する。例えば、こんなコード。

[c]

CGSize size;

self.myLabel.frame.size.height = size.height;

[/c]

訳の分からないエラーで泣きそうになったが、「うたブログ~情報編: Xcode;Expression is no assignable」を見て、ようやく理解。

「myLabel.frame」はプロパティへのアクセスで、「frame.size」は構造体メンバへのアクセス。これを混ぜているからエラーとなっている。

ということで、プロパティと構造体の箇所を分けてしまえばOK。

[c]

CGSize size;

CGRect frame = self.myLabel.frame;

frame.size.height = size.height;

[/c]