2016-04-18 5 views
0

EntityA: Гимнастка ПгвЬЫате LastNameSwift NSPredicate не как значения

один ко многим MeetResults

EntityB: MeetResults meetDate barScore beamScore floorScore vaultScore

Я загрузит все гимнасты, которые установлены как активные в сборщике. Когда я создаю результат NSSET.meetresults = meetScore.copy() как? NSSet, который отлично работает, я пытаюсь выяснить, как удалить гимнаст, у которого уже есть NSSET для этой даты. Любая помощь будет оценена.

func getGymnasts() { 

     let fetchRequest = NSFetchRequest(entityName: "Gymnast") 

     let sortDescriptor1 = NSSortDescriptor(key: "fullName", ascending: true) 

     fetchRequest.sortDescriptors = [sortDescriptor1] 

     let filter1 = NSPredicate(format: "isActive == %@", "Yes") 

     let filter2 = NSPredicate(format: "ANY meetresults.meetDate != %@", "\(meetDateText.text!)") 

     let predicate = NSCompoundPredicate(type: NSCompoundPredicateType.AndPredicateType, subpredicates: [filter1, filter2]) 

     fetchRequest.predicate = predicate 

     //fetchRequest.predicate = filter1 

     do { 

      self.gymnastArray = try AD.managedObjectContext.executeFetchRequest(fetchRequest) as! [Gymnast] 

      self.gymnastPicker.reloadAllComponents() 


     } catch { 

      fatalError("Fetch Failed") 
     } 

    } 
+0

Предположительно 'meetDate' хранится в виде даты, а не строки? – Wain

+0

Дата не сохраняется как строка. – debratton

+0

Вы проверили строковые форматы? вы попробовали подзапрос? – Wain

ответ

0

Взаимоотношения между многими людьми иногда бывают неудобными. Вы можете использовать синтаксис подзапросов для запроса счетчика внутренней выборки, чтобы найти Meet с вашими критериями, а затем проверить их нет:

let filter2 = NSPredicate(format: "SUBQUERY(meetresults.meetDate, $m, $m.meetDate == %@)[email protected] == 0", meetDateText.text!) 
+0

Нашел небольшую проблему. Это исключает их из других выступлений. Создание нового собрания с другой датой и сборщика не будет перечислять никому, у кого уже есть результат встречи. – debratton

+0

У моего оригинала было ==, у вас было! = Так что он должен был работать в обратном направлении – Wain

+0

Спасибо, должно быть, потому, что я вызывал свою функцию и вводил дату, прежде чем я действительно имел значение даты, переместил некоторые предметы вокруг и, похоже, работая сейчас, но также добавила аналогичную SUBQUERY (meetresults.meetName, $ m, $ m.meetName ==% @). @ count == 0 " – debratton