Установка предиката фильтра SwiftData в представлении SwiftUIIOS

Программируем под IOS
Anonymous
Установка предиката фильтра SwiftData в представлении SwiftUI

Сообщение Anonymous »

Я пытаюсь установить предикат для массива объектов внутри представления SwiftUI (и не могу этого сделать)
Мои модели данных состоят из двух независимых таблиц и третьей таблицы, которая содержит связи между первыми двумя таблицами (например, третья таблица является связывающей или объединяющей таблицей)

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

import SwiftData
@Model
class Object {
#Unique([\.name])
var name: String
var type: Int

init(name: String, type: Int) {
self.name = name
self.type = type
}
}

@Model
class Location {
#Unique([\.location])
var location: String
var value: Int

init(location: String, value: Int) {
self.location = location
self.value = value
}
}

@Model
class ObjAndLoc {
#Unique([\.object, \.location])
var object: Object
var location: Location

init(object: Object, location: Location) {
self.object = object
self.location = location
}
}
В рассматриваемом представлении я передаю объект и местоположение (которые уже существуют в соответствующих таблицах) и хочу узнать, есть ли соответствующая запись в таблице ObjAndLoc:

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

import SwiftUI
import SwiftData

struct DataView: View {
@Environment(\.modelContext) var modelContext
var object: Object
var location: Location
@Query var objAndLoc: [ObjAndLoc]

var body: some View {
Text("Hello, World!")
}

init(object: Object, location: Location) {
self.object = object
self.location = location

let predicate = #Predicate
{
$0.object == self.object && $0.location == self.location
}

_objAndLoc = Query(filter: predicate)
}
}
Однако это приводит к ошибке компиляции в конце блока "let predicate =":

Невозможно преобразовать значение типа
'PredicateExpressions.Conjunction
Object>,
PredicateExpressions.KeyPath>,
PredicateExpressions.Equal>' для типа результата закрытия 'любой
StandardPredicateExpression'

Очевидно, я что-то упускаю. Как настроить предикат Query для выбора нужного объекта и местоположения?

Подробнее здесь: https://stackoverflow.com/questions/798 ... iftui-view

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