Вы можете вставить макетные данные на уровне обслуживания или на уровне просмотра. Поскольку вы будете использовать это в нескольких представлениях, я бы рекомендовал добавить в сервис возможность макета (как в первом примере ниже).
Я не знаю, как выглядит ваш UserService
В эти примеры я добавил базовую c реализацию.
Уровень обслуживания
import SwiftUI
struct User {
var username: String
}
class UserService: ObservableObject {
@Published var user: User = User(username: "Initial username")
// If a mock user is provided to the UserService it will replace the initial user.
init(mockUser: User? = nil) {
if let user = mockUser {
self.user = user
}
}
}
struct WelcomeView: View {
@EnvironmentObject var userService: UserService
var body: some View {
Text(userService.user.username)
}
}
struct WelcomeView_Previews: PreviewProvider {
static var previews: some View {
WelcomeView()
.environmentObject(UserService(mockUser: User(username: "Test username")))
}
}
Уровень просмотра
import SwiftUI
struct User {
var username: String
}
class UserService: ObservableObject {
@Published var user: User = User(username: "Initial username")
}
struct WelcomeView: View {
@EnvironmentObject var userService: UserService
// Optional mock user. Will replace the user from UserService if provided.
var mockUser: User? = nil
var body: some View {
Text((mockUser != nil) ? mockUser!.username : userService.user.username)
}
}
struct WelcomeView_Previews: PreviewProvider {
static var previews: some View {
WelcomeView(mockUser: User(username: "Test username"))
.environmentObject(UserService())
}
}