Bird
Raised Fist0
iOS Swiftmobile~10 mins

Model definition with @Model in iOS Swift - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a model named User using @Model.

iOS Swift
import SwiftData

@[1] class User {
  var name: String
  init(name: String) {
    self.name = name
  }
}
Drag options to blanks, or click blank then click option'
AModel
BObservableObject
CState
DView
Attempts:
3 left
💡 Hint
Common Mistakes
Using @ObservableObject instead of @Model
Forgetting the '@' symbol
Using @State which is for UI state, not models
2fill in blank
medium

Complete the code to add an integer property 'age' to the User model.

iOS Swift
@Model class User {
  var name: String
  var [1]: Int
  init(name: String, age: Int) {
    self.name = name
    self.age = age
  }
}
Drag options to blanks, or click blank then click option'
Aage
Bscore
Cweight
Dheight
Attempts:
3 left
💡 Hint
Common Mistakes
Using a property name that doesn't match the initializer
Using a wrong data type
3fill in blank
hard

Fix the error in the model by completing the missing keyword to make the 'id' property unique.

iOS Swift
@Model class User {
  @[1] var id: UUID = UUID()
  var name: String
  init(name: String) {
    self.name = name
  }
}
Drag options to blanks, or click blank then click option'
AUnique
BAttribute(.unique)
CAttribute
DID
Attempts:
3 left
💡 Hint
Common Mistakes
Using '@ID' which is not a valid attribute
Forgetting to specify uniqueness
4fill in blank
hard

Fill both blanks to define a model with a default value for 'isActive' property.

iOS Swift
@Model class User {
  var name: String
  var [1]: Bool = [2]
  init(name: String, isActive: Bool = true) {
    self.name = name
    self.isActive = isActive
  }
}
Drag options to blanks, or click blank then click option'
AisActive
BisEnabled
Ctrue
Dfalse
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different property name than the initializer
Setting default value to false instead of true
5fill in blank
hard

Fill all three blanks to define a model with a computed property 'displayName' that returns the uppercase name.

iOS Swift
@Model class User {
  var name: String
  var age: Int
  var [1]: String {
    return [2].[3]()
  }
  init(name: String, age: Int) {
    self.name = name
    self.age = age
  }
}
Drag options to blanks, or click blank then click option'
AdisplayName
Bname
Cuppercased
Dage
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'age' instead of 'name' for uppercase conversion
Misspelling 'uppercased' method
Using wrong computed property name

Practice

(1/5)
1. What is the main purpose of using @Model in SwiftUI?
easy
A. To mark a class as a data container for app state
B. To create a user interface element
C. To define a function for navigation
D. To style text in the app

Solution

  1. Step 1: Understand the role of @Model

    @Model is used to mark a class that holds data for the app, making it a data container.
  2. Step 2: Differentiate from UI or styling

    @Model does not create UI elements or style text; it only defines data structures.
  3. Final Answer:

    To mark a class as a data container for app state -> Option A
  4. Quick Check:

    @Model = data container [OK]
Hint: Remember: @Model is for data, not UI or styling [OK]
Common Mistakes:
  • Thinking @Model creates UI components
  • Confusing @Model with styling attributes
  • Assuming @Model defines functions
2. Which of the following is the correct syntax to define a model class with @Model in Swift?
easy
A. class User { @Model var name: String }
B. class @Model User { var name: String }
C. class User @Model { var name: String }
D. @Model class User { var name: String }

Solution

  1. Step 1: Recall correct @Model placement

    @Model is placed before the class keyword to mark the entire class as a model.
  2. Step 2: Check other options for syntax errors

    Other placements of @Model cause syntax errors.
  3. Final Answer:

    @Model class User { var name: String } -> Option D
  4. Quick Check:

    @Model before class = correct syntax [OK]
Hint: Put @Model right before class keyword [OK]
Common Mistakes:
  • Placing @Model after class name
  • Adding @Model before property instead of class
  • Using @Model inside class body
3. Given the model definition:
@Model class Task { var title: String; var done: Bool }

What is the output of this code?
let task = Task(title: "Buy milk", done: false)
print(task.done)
medium
A. true
B. false
C. nil
D. Compilation error

Solution

  1. Step 1: Understand model initialization

    The Task model is initialized with done set to false (@Model synthesizes the initializer).
  2. Step 2: Print the done property value

    Printing task.done outputs the Boolean value false.
  3. Final Answer:

    false -> Option B
  4. Quick Check:

    task.done = false [OK]
Hint: Check property values passed during initialization [OK]
Common Mistakes:
  • Assuming default true value for done
  • Expecting nil instead of false
  • Thinking @Model changes property defaults
4. Identify the error in this model definition:
@Model class Product {
  var name: String
  var price: Double
  func discount() -> Double {
    return price * 0.9
  }
}
medium
A. No error, this is valid
B. Models cannot have functions inside them
C. price should be an Int, not Double
D. Missing initializer for properties

Solution

  1. Step 1: Check @Model class rules

    @Model classes are data containers that support stored properties, computed properties, initializers (synthesized), and methods.
  2. Step 2: Analyze potential issues

    No syntax errors: initializer synthesized by @Model, Double valid for price, methods allowed.
  3. Final Answer:

    No error, this is valid -> Option A
  4. Quick Check:

    @Model class = supports methods [OK]
Hint: @Model classes support methods [OK]
Common Mistakes:
  • Thinking @Model prohibits functions
  • Believing explicit initializer always required
  • Insisting price must be Int
5. You want to create a model to store user profile data with a name and optional age. Which is the best way to define it using @Model?
hard
A. @Model class UserProfile { var name: String; var age: Optional<Int> }
B. @Model class UserProfile { var name: String; var age: Int = nil }
C. @Model class UserProfile { var name: String; var age: Int? }
D. @Model class UserProfile { var name: String; var age: Int! }

Solution

  1. Step 1: Understand optional property syntax

    In Swift, optional properties are declared with a question mark, e.g., Int?.
  2. Step 2: Evaluate each option's correctness

    @Model class UserProfile { var name: String; var age: Int? } uses correct, idiomatic optional syntax. @Model class UserProfile { var name: String; var age: Int = nil } assigns nil to a non-optional Int, which is invalid. @Model class UserProfile { var name: String; var age: Optional<Int> } uses verbose Optional<Int>. @Model class UserProfile { var name: String; var age: Int! } uses implicitly unwrapped optional which is less safe.
  3. Final Answer:

    @Model class UserProfile { var name: String; var age: Int? } -> Option C
  4. Quick Check:

    Optional property = Int? [OK]
Hint: Use ? for optional properties in models [OK]
Common Mistakes:
  • Assigning nil to non-optional types
  • Using wrong optional syntax
  • Using implicitly unwrapped optionals unnecessarily
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