Использование SwiftUI с основными данными - PullRequest
6 голосов
/ 14 июня 2019

Для таблиц SwiftUI требуется привязка к массиву, хранящему все объекты вашей модели в памяти.Для небольших наборов данных имеет смысл компромисс между удобством и производительностью.Но для наборов данных с десятками / сотнями тысяч значений старый подход к отображению таблиц посредством запросов к источнику данных по-прежнему кажется подходящим.(Рассмотрим простое приложение словарь / тезаурус.).

Есть ли способ реализовать таблицы с поддержкой dataSource-style / CoreData в SwiftUI?

Ответы [ 2 ]

5 голосов
/ 14 июня 2019

Список не требует Array. Data должен соответствовать протоколу RandomAccessCollection. Это также может быть ваш NSFetchedResultsController.

extension List {
    /// Creates a List that computes its rows on demand from an underlying
    /// collection of identified data.
    @available(watchOS, unavailable)
    public init<Data, RowContent>(
        _: Data,
        selection _: Binding<Selection>?,
        rowContent _: @escaping (Data.Element.IdentifiedValue) -> RowContent
    ) where Content == ForEach<Data, HStack<RowContent>>,
        Data: RandomAccessCollection,
        RowContent: View,
        Data.Element:
        Identifiable

    /// Creates a List that computes its rows on demand from an underlying
    /// collection of identified data.
    @available(watchOS, unavailable)
    public init<Data, RowContent>(
        _: Data,
        selection _: Binding<Selection>?,
        action _: @escaping (Data.Element.IdentifiedValue) -> Void,
        rowContent _: @escaping (Data.Element.IdentifiedValue) -> RowContent
    ) where Content == ForEach<Data, Button<HStack<RowContent>>>,
        Data: RandomAccessCollection,
        RowContent: View, Dat
}

0 голосов
/ 07 июля 2019

Я думаю, что это причина использования ForEach () для циклов в SwiftUI, поэтому представление может контролировать, сколько элементов необходимо создать для заполнения экрана.

И массив из запроса выборки Core Data, вероятно, не содержит все объекты в памяти, они создаются только при обращении к ним.

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