私は2つのエンティティの学生と科目を持っています。生徒は複数の科目を持つことができます。私は今、私は、被験者がすでにその学生に属しているかどうかを確認したい学生(NSManagedObject)NSMutableSetで適用されたフィルタを削除するには
let studentSubjects = student?.mutableSetValue(forKey: "subjects")
からNSMutableSetオブジェクトを取得しています。このために私は今、私はカウントが> 0であるならば、他のいくつかのアクションが、問題がそれである学生
let subjectEntity = NSEntityDescription.entity(forEntityName: "Subject", in: context)
var subjectObject = NSManagedObject(entity: subjectEntity!, insertInto: context)
if assignedSubjects.count > 0 {
if let filteredItem = assignedSubjects.first as? NSManagedObject {
subjectObject = filteredItem
}
}
if assignedSubjects.count == 0 {
if let subjectsManagedObject = studentSubjects.allObjects as? [NSManagedObject] {
if subjectsManagedObject.count > 0 {
studentSubjects.add(subjectObject)
} else {
student.setValue(NSSet(object:subjectObject), forKey: "subjects")
}
try context.save()
}
} else {
try subjectObject.managedObjectContext?.save()
}
に対象を割り当てるかチェックしています。この
let assignedSubjects = assignedSubjects.filtered(using: NSPredicate(format: "subject_title == %@", "Science"))
ようNSMutableSetにフィルタを適用しています既存のレコードを保存するのではなく、常に新しいレコードを挿入します。
適用されたフィルタを削除しますか?述語を使用してフィルタリングする行を削除できませんか?私はその点を得ていない。 – kamil3
私は行を削除することはできません、レコードが既に存在するかどうかを確認する必要があります。 –
割り当てられたサブジェクトを再度フェッチしようとすると、フィルタが適用されていることがわかります –