Structs are preferable to classes in Swift for several reasons: 1. Structs are value types, so copies have independent state, while classes are reference types where copies share the same state. 2. Structs provide value semantics, automatic initializers, and are much faster than classes due to being passed by value rather than reference. 3. As a rule of thumb, use structs when encapsulating simple data or when copies should have independent state, while classes should be used for shared, mutable state or complex frameworks.