作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个具有多对多关系的核心数据实体,比如说具有以下属性的用户和项目实体。
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?
}
现在,我有了显示所有项目列表的表格 View ,并具有按用户过滤项目的功能。
这是我的过滤函数。
func getFilteredProjects() {
//projectArray holds all project data
//loggedInUser is an user instance
filteredProjectArray = projectArray.filter({ $0.user!.containsObject(loggedInUser) })
projectTableView.reloadData()
}
在上面的代码中,我必须强制展开可选用户集。
如果用户设置为 nil(这可能发生取决于删除规则),我担心使用那段代码会破坏我的应用程序。
我的问题是,有没有办法过滤可选的 NSMutableSet
而无需强制展开它?
最佳答案
您可以使用可选链接(未经编译器测试):
projectArray.filter { $0.user?.containsObject(loggedInUser) == true }
但是“核心数据方式”是执行一个获取请求在带有谓词的“项目”实体上
NSPredicate(format: "ANY user = %@", loggedInUser)
关于ios - 如何过滤核心数据多对多关系中的可选 NSMutableSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38970902/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!