是否有可能从具有特定属性的数组中获取对象?还是我需要遍历数组中的所有对象并检查属性是否是我正在寻找的特定对象?
编辑:谢谢你给我正确的方向,但我有一个转换此问题。
//再编辑一次:好的,如果只有一个特定的结果?这也是可行的方法吗?
let imageUUID = sender.imageUUID
let questionImageObjects = self.formImages[currentSelectedQuestion.qIndex] as [Images]!
// this is working
//var imageObject:Images!
/*
for (index, image) in enumerate(questionImageObjects) {
if(image.imageUUID == imageUUID) {
imageObject = image
}
}
*/
// this is not working - NSArray is not a subtype of Images- so what if there is only 1 possible result?
var imageObject = questionImageObjects.filter( { return $0.imageUUID == imageUUID } )
//这不起作用-NSArray不是Images的子类型-那么如果只有1种可能的结果怎么办?
您无法在编译时证明数组上只有一个可能的结果。您实际要的是第 一个 匹配结果。最简单(尽管不是最快)是仅获取filter结果的第一个元素:
let imageObject = questionImageObjects.filter{ $0.imageUUID == imageUUID }.first
imageObject
现在当然是可选的,因为可能没有匹配项。
如果搜索整个数组很费时,您当然可以轻松创建一个firstMatching
函数,该函数将返回与闭包匹配的(可选)第一个元素,但是对于较短的数组,这很好且简单。
查尔斯指出,在Swift 3中内置了:
questionImageObjects.first(where: { $0.imageUUID == imageUUID })
问题内容: 我正在寻找一种非常快速,干净且有效的方法来获取以下JSON切片中的最大“ y”值: for-loop是解决此问题的唯一方法吗?我热衷于使用。 问题答案: 要在中找到对象的最大值:
问题内容: 我有一些复杂的对象,例如猫,它具有许多属性,例如年龄,喜爱的猫食等等。 Java集中存储了一堆猫,我需要查找所有3岁的猫,或者最喜欢猫粮的Whiskas。当然,我可以编写一个自定义方法来查找那些具有特定属性的Cat,但是这样做会麻烦许多属性。有一些通用的方法吗? 问题答案: 您可以编写一个采用接口实例的方法,该实例定义了一个方法,该方法可以通过所需的任何属性检查来实现。 更好的是,使其
我知道这里有类似的问题,但是使用这些方法只返回一个max值。我需要的是确定数组的哪些对象在给定属性中具有最大值,并返回在给定属性中具有最大值的那些对象中的某个(其他)属性的值。 我有一个名为week的对象数组,具有两个属性“name”和“traffic”: 在本例中,Monday和Friday属性“traffic”的最大值为13,如果只有一天,我需要返回一个包含具有最高“traffic”值的日期名
问题内容: 存在一个包含许多对象的数组。通过属性在此数组中查找一个或多个对象所必需。 输入obj: 输出结果:(以值4搜索“开始”) 问题答案: _findItemByValue(Obj,“开始”,4); 与除IE6,IE7,IE8以外的所有版本兼容,但存在polyfill。
问题内容: 我是AngularJS的新手。我了解到可以使用以下查询在DOM中找到元素: 这对于按ID或CSS类名查找元素很有用。但是,我需要能够使用其他方法来查找元素。我有一个看起来像下面的元素: 我无法查询“ myContainer”,因为它已被重用了多少。因此,我想找到任何具有“ my- directive”属性的元素。如何搜索DOM并找到任何使用“我的指令”的元素? 问题答案: 您应该在指令
问题内容: 该数组如下所示: 我有一个名为的整数变量。 如何选择具有对象的数组条目,其中的属性具有值? 问题答案: 您可以迭代数组,搜索特定记录(一次只能搜索一次),也可以使用另一个关联数组来构建哈希图。 对于前者,像这样