首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift - Predicate根据成员数组的属性过滤数组

Swift - Predicate根据成员数组的属性过滤数组
EN

Stack Overflow用户
提问于 2016-10-17 16:27:43
回答 3查看 15.2K关注 0票数 5

我需要过滤出一个MyClass3对象数组。MyClass2对象的数组是MyClass3对象的成员(请参考下面的代码)。MyClass2对象有一个id。我手头有一台idArray。我需要过滤掉那些idArray中的所有ids都存在于其MyClass2成员中的MyClass3对象。

代码语言:javascript
运行
复制
class MyClass2 : NSObject {
    var uid: Int = 0

    init(uid : Int) {
        self.uid = uid
    }
}

class MyClass3 : NSObject {
    var arr: [MyClass2]

    init(units: [MyClass2]) {
        arr = units
    }
}

var units1 = [MyClass2(uid: 1),MyClass2(uid: 2), MyClass2(uid: 3), MyClass2(uid: 4), MyClass2(uid: 5)]
var units2 = [MyClass2(uid: 4),MyClass2(uid: 5), MyClass2(uid: 6)]
var units3 = [MyClass2(uid: 3),MyClass2(uid: 5), MyClass2(uid: 7), MyClass2(uid: 1)]

var ids = [1,5]

var available3: [MyClass3] = [MyClass3(units: units1), MyClass3(units: units2), MyClass3(units: units3)]
var filtered3: [MyClass3] = []

let searchPredicate: NSPredicate = NSPredicate(format: " ANY arr.uid IN \(ids)") // needed predicate
print(searchPredicate.predicateFormat)
filtered3 = (available3 as NSArray).filteredArrayUsingPredicate(searchPredicate) as! [MyClass3]

所需的答案是我们在过滤后的数组中需要MyClass3(单位: units1)和MyClass3(单位: units3)。

这是行不通的。有人能为此建议一种谓词格式吗?

EN

Stack Overflow用户

发布于 2016-10-17 16:35:21

您可以使用执行交叉点操作而不是NSPredicate:

请参考下面的链接

Set operations (union, intersection) on Swift array?

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40081680

复制
相关文章

相似问题

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