首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中跨两个没有关系的实体生成获取请求

在Swift中跨两个没有关系的实体生成获取请求
EN

Stack Overflow用户
提问于 2016-01-28 00:20:26
回答 1查看 223关注 0票数 0

我现在有一个有两个独立实体的核对表应用程序。第一个包含所有必需的项信息(名称、组、集、年份等),第二个包含所有用户可编辑的信息(拥有、需要,等等)。它们都共享一个uniqueID属性。我以这种方式设置它(没有关系),因为我正在尝试与iCloud同步,检查表信息的同步非常大,所以我只需要同步用户可编辑的信息(更不用说数据了)。这一切都很顺利。我现在遇到的一个问题是:

我希望能够过滤用户可编辑信息中的拥有(或所需)数据从项信息生成的表视图。本质上,我需要能够对用户可编辑信息执行一个获取请求,以获取所有拥有的项,然后使用得到的数组并从具有匹配的uniqueID的item实体中获取项。是否可以执行一个获取请求来匹配在第一个获取请求中生成的数组中的所有项(比较uniqueID)?也许是用某种for循环?或者,更好的是,某种聚合的获取请求?

任何提示都将不胜感激!

-谢谢!编辑以包括答案代码:

最后,我使用这段代码从一个实体(UserEdits)创建了“拥有的项”数组。

代码语言:javascript
复制
var uniqueIDs = [String]()

        if let ownedTemplate = CDHelper.shared.model.fetchRequestTemplateForName("AllOwnedItems"), let ownedRequest = ownedTemplate.copy() as? NSFetchRequest {
            do {
                if let ownedItems = try CDHelper.shared.context.executeFetchRequest(ownedRequest) as? [UserEdits] {
                    for ownedItem in ownedItems {
                        uniqueIDs.append(ownedItem.uniqueID!)
                    }
                }
            } catch {print("ERROR executing a fetch request: \(error)")}
        }

然后将该数组传递到针对较大实体(项)的提取请求中。

代码语言:javascript
复制
if let template = CDHelper.shared.model.fetchRequestFromTemplateWithName("FilteredMainListOwned", substitutionVariables: ["SORT1" : lineFilter.lowercaseString, "SORT2" : uniqueIDs]) {
            let request = template as NSFetchRequest
            self.filter = request.predicate
            self.reloadFRC(request.predicate)
        }

其中,替换表达式为:

代码语言:javascript
复制
group BEGINSWITH $SORT1
uniqueID IN $SORT2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 00:31:28

听起来你在找 aggregate operation。如果您有一组已知的要加载的标识符,则可以编写如下表达式:

代码语言:javascript
复制
let ids = ["1", "2"]
NSPredicate("%K IN %@", "uniqueID", ids)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35050742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档