Bird
Raised Fist0
iOS Swiftmobile~20 mins

Identifiable protocol in iOS Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Identifiable Protocol Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What is the purpose of the Identifiable protocol in SwiftUI?
Why do we use the Identifiable protocol when working with lists in SwiftUI?
AIt changes the color of list items based on their position.
BIt automatically sorts the list items alphabetically.
CIt encrypts the data in the list for security.
DIt helps SwiftUI uniquely identify each item in a list for efficient updates.
Attempts:
2 left
💡 Hint
Think about how SwiftUI knows which item changed in a list.
❓ ui_behavior
intermediate
2:00remaining
What will happen if you use a list of items without Identifiable conformance in SwiftUI?
Consider this SwiftUI code snippet: struct Item { var name: String } struct ContentView: View { let items = [Item(name: "A"), Item(name: "B")] var body: some View { List(items, id: \ .name) { item in Text(item.name) } } } What will happen when you try to compile this?
ACompilation error because Item does not conform to Identifiable.
BThe list will display items but with duplicate ids warning at runtime.
CThe list will display items correctly without any errors or warnings.
DThe app will crash immediately when the list appears.
Attempts:
2 left
💡 Hint
SwiftUI List requires items to be uniquely identifiable.
📝 Syntax
advanced
2:00remaining
Which code correctly makes a struct conform to Identifiable?
Choose the correct Swift code that makes the struct User conform to Identifiable with a unique id.
iOS Swift
struct User {
  var id: UUID
  var name: String
}
A
struct User: Identifiable {
  var id: UUID
  var name: String
}
B
struct User: Identifiable {
  var name: String
}
C
struct User: Identifiable {
  var id: String
  var name: String
}
D
struct User {
  var id: UUID
  var name: String
} : Identifiable
Attempts:
2 left
💡 Hint
Identifiable requires a property named id matching the associated type.
❓ lifecycle
advanced
2:00remaining
How does Identifiable affect SwiftUI view updates in a list?
When a list of Identifiable items changes, how does SwiftUI use the id to update the UI?
ASwiftUI reloads the entire list every time any item changes.
BSwiftUI ignores the ids and updates views randomly.
CSwiftUI compares the ids to detect which items changed and updates only those views.
DSwiftUI duplicates views for each id to improve performance.
Attempts:
2 left
💡 Hint
Think about efficient UI updates when data changes.
🔧 Debug
expert
2:00remaining
What error occurs if two Identifiable items share the same id in a SwiftUI list?
Given two items with the same id in a SwiftUI List, what happens when the app runs?
AThe list silently ignores one of the items without warning.
BRuntime warning about duplicate ids and unpredictable UI behavior.
CThe app crashes immediately with a fatal error.
DCompile-time error preventing the app from building.
Attempts:
2 left
💡 Hint
Think about how SwiftUI relies on unique ids for stable UI.

Practice

(1/5)
1.

What is the main purpose of the Identifiable protocol in Swift?

easy
A. To enforce a specific initializer
B. To make a class inherit from another class
C. To add default methods to a struct
D. To require a unique id property for each instance

Solution

  1. Step 1: Understand the Identifiable protocol

    The Identifiable protocol requires that a type has a unique id property.
  2. Step 2: Identify the purpose of the id

    This unique id helps SwiftUI distinguish between different instances, especially in lists.
  3. Final Answer:

    To require a unique id property for each instance -> Option D
  4. Quick Check:

    Identifiable = unique id required [OK]
Hint: Identifiable means each item must have a unique id [OK]
Common Mistakes:
  • Thinking it adds methods instead of requiring an id
  • Confusing it with inheritance
  • Assuming it enforces initializers
2.

Which of the following is the correct way to declare a struct conforming to Identifiable with a constant id of type UUID?

struct Item: Identifiable {
    // Fill in the blank
}
easy
A. let id: UUID = UUID()
B. var id: UUID
C. var id = UUID()
D. func id() -> UUID

Solution

  1. Step 1: Check property declaration for id

    The id must be a property, not a function.
  2. Step 2: Choose correct syntax with initialization

    Using let id: UUID = UUID() declares a constant id initialized with a new UUID, which is correct.
  3. Final Answer:

    let id: UUID = UUID() -> Option A
  4. Quick Check:

    Property with UUID value, not function [OK]
Hint: id must be a property, not a function [OK]
Common Mistakes:
  • Declaring id as a function
  • Not initializing id
  • Using var without initialization
3.

Given the code below, what will be printed?

struct User: Identifiable {
    let id: Int
    let name: String
}

let users = [User(id: 1, name: "Anna"), User(id: 2, name: "Ben")]
print(users[1].id)
medium
A. 1
B. Anna
C. 2
D. Ben

Solution

  1. Step 1: Identify the second user in the array

    Index 1 refers to the second element, which is User(id: 2, name: "Ben").
  2. Step 2: Access the id property

    The id of this user is 2, so print(users[1].id) prints 2.
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    Second user's id = 2 [OK]
Hint: Array index 1 is second element, check its id [OK]
Common Mistakes:
  • Confusing index 0 and 1
  • Printing name instead of id
  • Assuming id is name
4.

What is wrong with this struct conforming to Identifiable?

struct Product: Identifiable {
    let name: String
}
medium
A. Missing id property required by Identifiable
B. The name property should be var, not let
C. Structs cannot conform to protocols
D. The struct must inherit from a class

Solution

  1. Step 1: Check protocol requirements

    The Identifiable protocol requires a unique id property.
  2. Step 2: Verify struct properties

    This struct only has name, no id property is declared.
  3. Final Answer:

    Missing id property required by Identifiable -> Option A
  4. Quick Check:

    Identifiable needs id property [OK]
Hint: Identifiable always needs an id property [OK]
Common Mistakes:
  • Thinking name property suffices
  • Believing structs can't conform to protocols
  • Assuming var vs let matters here
5.

You want to create a list of tasks where each task has a unique string identifier. Which of the following struct definitions correctly conforms to Identifiable and uses a string id?

struct Task: Identifiable {
    let id: String
    let title: String

    init(title: String) {
        // Fill in the blank
    }
}
hard
A. self.title = title self.id = title
B. self.title = title self.id = UUID().uuidString
C. self.title = title self.id = String()
D. self.title = title self.id = nil

Solution

  1. Step 1: Understand the need for unique string id

    The id must be unique for each task and of type String.
  2. Step 2: Check each option for uniqueness and type

    self.title = title self.id = UUID().uuidString uses UUID().uuidString which generates a unique string each time, fulfilling the requirement.
  3. Final Answer:

    self.title = title self.id = UUID().uuidString -> Option B
  4. Quick Check:

    Unique string id = UUID().uuidString [OK]
Hint: Use UUID().uuidString for unique string ids [OK]
Common Mistakes:
  • Using title as id which may not be unique
  • Assigning empty string as id
  • Setting id to nil which is invalid
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard