Как использовать @Fetchrequest вне View - PullRequest
4 голосов
/ 06 февраля 2020

Я пытаюсь переместить свое свойство @fetchrequest во вспомогательный класс, который не является View, но каждый раз, когда я пытаюсь это сделать, я получаю неверную ошибку инструкции.

Может кто-нибудь помочь я?

Это образец моего кода:

ViewModel:

class ViewModel {
    @FetchRequest(entity: Teste.entity(), sortDescriptors: []) var teste: FetchedResults<Teste>
}

Просмотр:


struct ContentView: View {

    let viewModel: ViewModel

    init(viewModel: ViewModel) {
        self.viewModel = viewModel
    }

    var body: some View {

        List(viewModel.teste) { item in // error happens in this line
            Text(item.id ?? "")
        }

    }
}

Спасибо!

1 Ответ

2 голосов
/ 06 февраля 2020

@FetchRequest - это DynamicProperty, а последний -

/// Represents a stored variable in a `View` type that is dynamically
/// updated from some external property of the view. These variables
/// will be given valid values immediately before `body()` is called.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol DynamicProperty {

Так что, по крайней мере, «не в дизайне» пытаться использовать его вне View. Если это действительно вариант использования, используйте NSFetchRequest напрямую, как ранее в UIKit + CoreData, и интегрируйте результаты с SwiftUI View вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...