我有两个具有多对多关系的核心数据实体,让我们说具有以下属性的用户和项目实体。
extension Project {
@NSManaged var project: String?
@NSManaged var projectId: String?
@NSManaged var user: NSMutableSet?
}
extension User {
@NSManaged var address: String?
@NSManaged var dateOfBirth: String?
@NSManaged var email: String?
@NSManaged var firstName: String?
@NSManaged var lastName: String?
@NSManaged var phoneNumber: String?
@NSManaged var userId: String?
@NSManaged var username: String?
@NSManaged var projects: NSMutableSet?
}
现在,我有一个表视图,它显示了项目的所有列表,并具有用户过滤项目的功能 这是我的过滤功能。
func getFilteredProjects() {
//projectArray holds all project data
//loggedInUser is an user instance
filteredProjectArray = projectArray.filter({ $0.user!.containsObject(loggedInUser) })
projectTableView.reloadData()
}
在上面的代码中,我不得不强行打开可选的用户设置
如果用户设置为nil(可能发生这取决于删除规则),我担心使用那段代码会破坏我的应用程序。
我的问题是,有没有办法过滤可选的NSMutableSet
而不用力展开它?