📖
【Swift】structの標準プロトコルについて
Swiftのclass、structが準拠できる標準プロトコルについてまとめました。
1.Identifiable
一意の識別子(id)を持つオブジェクトを扱う際に使用します。
idプロパティは必須です。
SwiftUIのListやForEachなどで便利です。
struct User: Identifiable {
var id: Int
var name: String
}
2.Hashable
オブジェクトをハッシュ化するために使用されます。
これにより、SetやDictionaryのようなコレクションのキーとして使えるようになります。
struct User: Hashable {
var id: Int
var name: String
}
let user1 = User(id: 1, name: "Alice")
let user2 = User(id: 2, name: "Bob")
let user3 = User(id: 3, name: "Charlie")
// Setに追加(重複したidは追加されない)
var userSet: Set<User> = [user1, user2]
userSet.insert(user3)
userSet.insert(user1) // user1はすでに存在するので無視される
// Dictionaryでキーとして使用
var userDictionary: [User: String] = [user1: "Admin", user2: "User"]
print(userDictionary[user1]!) // 出力: "Admin"
3.Decodable
外部データ(例えば、JSON)Swiftのオブジェクトに変換するためのプロトコルです。
APIから受け取ったデータを簡単に変換できます。
struct User: Decodable {
var name: String
var age: Int
}
let jsonData = """
{
"name": "John",
"age": 30
}
""".data(using: .utf8)!
do {
let user = try JSONDecoder().decode(User.self, from: jsonData)
print(user.name) // "John"
} catch {
print(error)
}
Discussion