70640


Swiftで以下のように `init` に `?` が付いてる時はどういう意味ですか？

また これを `!` で外す時は `guard let … ??` でいいですか？

[code]

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.copyInit()
    }
    
[/code]


CC BY-SA 4.0
2020-09-23T15:21:25.893
70639
2020-09-24T02:27:04.237
2020-09-24T02:27:04.237
3060
39481
question
swift
Swiftでinitに?がついてるときはどういう意味ですか？


> initに?がついてるときはどういう意味

[公式のSwift本](https://docs.swift.org/swift-book/)で[Failable
Initializer](https://docs.swift.org/swift-
book/LanguageGuide/Initialization.html#ID224)と呼ばれているものです。直訳すれば「失敗する可能性のあるイニシャライザ」と言うことになりますが、初期化の途中で失敗する可能性があり、失敗した場合には結果が`nil`になると言うイニシャライザです。

> これを!ではずす

「!ではずす」と言う言い方は意味をなさないので何のことかわかりませんが、強制アンラップ(`!`)を使わずに安全に使用したい場合、guard
letに代表される条件付きバインディングを用いたり、`??`演算子で`nil`の場合のデフォルト値を補ってやると言うのは、Optional型を返すメソッドと同じになります。


CC BY-SA 4.0
2020-09-23T15:44:23.673
70640
2020-09-23T15:44:23.673
13972
70639
answer