Swift イニシャライザ
イニシャライザとは
型のインスタンス化を初期化する
すべてのプロパティはインスタンス化の完了までに値が代入されていなければならないため、プロパティの宣言時に初期値を持たないプロパティはイニシャライザ内で初期化する必要がある。
定義方法
initキーワードで宣言し、引数と初期化に関する処理を定義する。
init(引数){
初期化処理
}
次の例では、selfIntroduction型に定義したイニシャライザを用いて、selfIntroduction型のインスタンスを初期化している。
struct selfIntroduction {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
var val = selfIntroduction(name: "kunio", age: 21)
print(val.name)
print(val.age)
すべての型に共通のイニシャライザ
失敗可能イニシャライザ
- 初期化の失敗を考慮したイニシャライザ
- 戻り値はOptional型(初期化に失敗した場合にnilを返す)
失敗可能イニシャライザはinitキーワードに?を加えてinit?(引数)のように定義する。
初期化の失敗はreturn nilで表し、イニシャライザはnilを返す。
struct Item {
let id: Int
let title: String
init?(dictionary: [String: Any]) {
guard let id = dictionary["id"] as? Int,
let title = dictionary["title"] as? String else {
return nil
}
self.id = id
self.title = title
}
}
let dictionaries: [[String: Any]] = [
["id": 1, "title": "ABC"],
["id": 2, "title": "DEF"],
["id": 3, "title": "GHI"],
["title": "JKL"]
]
for dictionary in dictionaries {
if let item = Item(dictionary: dictionary) {
print(item)
} else {
print("エラー: \(dictionary)")
}
}
随時更新
Author And Source
この問題について(Swift イニシャライザ), 我々は、より多くの情報をここで見つけました https://qiita.com/KnoTrd/items/1a7611924b8e97668c6f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .