Установка предиката фильтра 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
Ответить

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

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

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

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

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