NSPredicate 格式用于检查 2 个数组并过滤这些数组
NSPredicate format for check the 2 array and filter those array
我有一个名为 A 的数组,还有一个名为 B 的领域结果列表。现在我必须根据 A 中包含的值过滤我的 B。这样,我的 B 将只有包含 A 的值对象.
这是我的代码:
var peopleObjectId: [String] = ["1", "2", "4", "6"]
var list = Results<userData>
我的列表包含关于用户的所有对象。现在通过使用下面的过滤器。我必须提交我的 peopleObjectId 包含的列表值
list = list.filter(NSPredicate(format: "peopleID CONTAINS %@", peopleObjectId))
我知道我不应该直接使用 peopleObjectId
。不确定我该如何实现。
任何帮助都会有用。
提前致谢
您可以使用 IN
关键字:
IN
Left hand expression must appear in collection specified by right hand expression. i.e. name IN {‘Milk’, ‘Eggs’, ‘Bread’}
let found = list.filter { (user) in
NSPredicate(format: "SELF IN %@", peopleObjectId)
.evaluate(with:user.peopleID)
}
更多阅读 NSPredicate
:
有时越简单越好,似乎不需要 NSPredicate。
此外,运行 使用 Swift 函数的过滤器不会 return Realm Results 对象,它 return 是一个 LazyFilterSequence,它不是 Realm 集合。所以那些对象无法被观察到并且失去了它们的一些领域性。
如果您在领域中存储了一堆狗并且您想要检索特定的狗,这里是return领域结果对象
的解决方案
var listOfDogsToFind = ["Fido", "Dino", "Sport"]
var results = realm.objects(DogClass.self).filter("dog_name IN %@", listOfDogsToFind)
我有一个名为 A 的数组,还有一个名为 B 的领域结果列表。现在我必须根据 A 中包含的值过滤我的 B。这样,我的 B 将只有包含 A 的值对象.
这是我的代码:
var peopleObjectId: [String] = ["1", "2", "4", "6"]
var list = Results<userData>
我的列表包含关于用户的所有对象。现在通过使用下面的过滤器。我必须提交我的 peopleObjectId 包含的列表值
list = list.filter(NSPredicate(format: "peopleID CONTAINS %@", peopleObjectId))
我知道我不应该直接使用 peopleObjectId
。不确定我该如何实现。
任何帮助都会有用。
提前致谢
您可以使用 IN
关键字:
IN
Left hand expression must appear in collection specified by right hand expression. i.e. name IN {‘Milk’, ‘Eggs’, ‘Bread’}
let found = list.filter { (user) in
NSPredicate(format: "SELF IN %@", peopleObjectId)
.evaluate(with:user.peopleID)
}
更多阅读 NSPredicate
:
有时越简单越好,似乎不需要 NSPredicate。
此外,运行 使用 Swift 函数的过滤器不会 return Realm Results 对象,它 return 是一个 LazyFilterSequence,它不是 Realm 集合。所以那些对象无法被观察到并且失去了它们的一些领域性。
如果您在领域中存储了一堆狗并且您想要检索特定的狗,这里是return领域结果对象
的解决方案var listOfDogsToFind = ["Fido", "Dino", "Sport"]
var results = realm.objects(DogClass.self).filter("dog_name IN %@", listOfDogsToFind)