【发布时间】:2016-04-18 22:13:56
【问题描述】:
实体A:体操运动员 名 姓氏
一对多 MeetResults
EntityB:MeetResults 见面日期 barScore 光束评分 地板分数 VaultScore
我正在将所有设置为活动的体操运动员加载到选择器中。当我创建一个 NSSET result.meetresults = meetScore.copy() as? 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")
}
}
【问题讨论】:
-
大概
meetDate存储为日期,而不是字符串? -
没有日期存储为字符串。
-
您验证了字符串格式吗?您尝试过子查询方法吗?
-
我已经确认如果我点击新建来添加另一个体操运动员,如果说我已经添加了 3 名体操运动员,那是我必须在我的选择器中选择的唯一 3 名。我找不到使用(不等于)或(不喜欢)一个值。不管我使用 != 还是 == 它仍然会带回我添加的 3 名体操运动员。 let filter2 = NSPredicate(format: "ANY meetresults.meetDate != %@", "(meetDateText.text!)")
-
所以你的目标实际上是让在指定日期没有比赛的体操运动员返回?
标签: swift core-data nspredicate