LoginSignup
13
10

More than 5 years have passed since last update.

swift array?.append(XXX) のようなオブジェクトを破壊するメソッドはoptionalに注意せねば

Last updated at Posted at 2015-10-30
var item = [String]?()
item?.append("aaa")
print(item)
// -> nil
  • optionalで宣言しているだけなのでnilのチェーンになり、当然 item はnilのまま。
var item = [String]?()
item = []
item?.append("bbb")
print(item)
// -> ["bbb"]
  • append()を有効にするには一旦、空の配列でもいいので入れてやらないといけない
  • itemがnilではなくなった時点でappend()が有効になり、配列の中身がかわる

  • どちらも正しいコードなのでXcodeもコンパイラもエラーを返さない

  • optionalをforced unwrappingでもしてないかぎり1つ目の例でも、実行時クラッシュしない

  • オブジェクトに破壊的変更をもたらすメソッドは全部こういうこのが起こりうるので注意しないと、と僕は思った

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10