gpt4 book ai didi

ios - 如何过滤核心数据多对多关系中的可选 NSMutableSet?

转载 作者:行者123 更新时间:2023-11-28 16:17:04 27 4
gpt4 key购买 nike

我有两个具有多对多关系的核心数据实体,比如说具有以下属性的用户和项目实体。

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com