#Предварительный просмотр при использовании @ModelActor в качестве параметраIOS

Программируем под IOS
Ответить
Anonymous
 #Предварительный просмотр при использовании @ModelActor в качестве параметра

Сообщение Anonymous »

Я создал ModelActor следующим образом:

Код: Выделить всё

@ModelActor
actor ItemDataSource {

func fetch() -> [UserEntity] {
do {
return try modelContext.fetch(FetchDescriptor())
} catch {
fatalError(error.localizedDescription)
}
}

func append(user: UserEntity) {
modelContext.insert(user)
do {
try modelContext.save()
} catch {
fatalError(error.localizedDescription)
}
}

func delete() {
do {
try modelContext.delete(model: UserEntity.self)
try modelContext.save()
} catch {
fatalError(error.localizedDescription)
}
}
}
Он был передан в мою ViewModel в структуре приложения следующим образом:

Код: Выделить всё

private let dataSource = ItemDataSource(modelContainer: try! ModelContainer(for: UserEntity.self))
А вот моя функция инициализации ViewModel:

Код: Выделить всё

class GithubViewModel: ObservableObject {
private let dataSource: ItemDataSource
private let networkService: NetworkService

@Published var viewState: ViewState = .loading
@Published var users: [UserEntity] = []

init(networkService: NetworkService, dataSource: ItemDataSource) {
self.networkService = networkService
self.dataSource = dataSource
refresh()
}
ViewModel передается в мой ContentView с помощью SwiftUI:

Код: Выделить всё

struct ContentView: View {

@ObservedObject var viewModel: GithubViewModel
Теперь я хочу написать предварительный просмотр для моего ContentView. Как создать экземпляр ItemDataSource в #Preview?

Код: Выделить всё

#Preview {
@State var navigationPath = [NavigationPath]()
return ContentView(viewModel: GithubViewModel(networkService: NetworkService(), dataSource: ItemDataSource()), navigationPath: $navigationPath)
}
Ошибка гласит: «ItemDataSource» невозможно создать, поскольку у него нет доступных инициализаторов.
Исходный код можно найти: https: //github.com/alirezaeiii/CachingSwiftData

Подробнее здесь: https://stackoverflow.com/questions/792 ... -parameter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»