NSPredicate, чтобы возвратить все кроме данного объекта - PullRequest
1 голос
/ 07 января 2020

не может найти синтаксис NSPredicate, который позволяет мне выбрать все объекты, кроме одного данного

  fetchRequest.predicate = NSPredicate(format: "SELF != %@", setting.objectID)

У моего объекта нет сохраненного идентификатора. где-то в комментариях обнаружил, что синтаксисы, но он не работает:

Generic parameter 'Subject' could not be inferred

есть идеи, как отфильтровать все объекты, кроме одного, без фильтрации нескольких свойств?

это мое мнение (с помощью SwiftUI) :

struct SettingsChoiseView: View {
    @Binding var actualSetting: Settings
    @Environment(\.managedObjectContext) var moc: NSManagedObjectContext
    @FetchRequest var avalibleSettings: FetchedResults<Settings>

     init(setting: Binding<Settings>) {
         let fetchRequest: NSFetchRequest< Settings> = Settings.fetchRequest()
         fetchRequest.sortDescriptors = [NSSortDescriptor(keyPath: \ Settings.name, ascending: true),
                                    NSSortDescriptor(keyPath: \ Settings.height, ascending: true)]
         fetchRequest.predicate = NSPredicate(format: "!(name = %@ && height == %d)", setting.name.wrappedValue, setting.height.wrappedValue)

            self._avalibleSettings = FetchRequest(fetchRequest:fetchRequest)
    }
    var body: some View{
        ...
    }
}

Settings - NSManagedObject с именем свойства и высотой.

1 Ответ

0 голосов
/ 08 января 2020

спасибо @Asperi, получаю:

        fetchRequest.predicate = NSPredicate(format: "NOT (self in %@)", [setting.wrappedValue])
...