Ios 在Swift中实现更通用的功能方法

Ios 在Swift中实现更通用的功能方法,ios,generics,swift,nspredicate,xcode6,Ios,Generics,Swift,Nspredicate,Xcode6,我在Swift中有一个数组,用于保存您在工作周内的轮班数。 我想从这个集合中检索在特定条件下匹配的第一个元素(在本例中是dateworked) 然而,稍后,我可能还想找到其他事情,比如你的最高收入转变。我甚至可能希望选择与特定子句匹配的所有项,而不是仅选择一个 这里的谓词是否参与了这样的操作?有没有人能给我指出正确的方向,或者分享一些代码示例来帮助我实现这一点,这样我就不必为数组上的特定目的编写多个函数 非常感谢你的帮助 简单的答案是使用indexOfObjectPassingTest和正确的谓

我在Swift中有一个数组,用于保存您在工作周内的轮班数。 我想从这个集合中检索在特定条件下匹配的第一个元素(在本例中是dateworked)

然而,稍后,我可能还想找到其他事情,比如你的最高收入转变。我甚至可能希望选择与特定子句匹配的所有项,而不是仅选择一个

这里的谓词是否参与了这样的操作?有没有人能给我指出正确的方向,或者分享一些代码示例来帮助我实现这一点,这样我就不必为数组上的特定目的编写多个函数


非常感谢你的帮助

简单的答案是使用
indexOfObjectPassingTest
和正确的谓词。当您想要在一个小数组上执行少量的唯一搜索时,这是有效的,在这个数组中,在自己的函数中抽象每种类型的搜索几乎是无用的。 然而:

    <> LI>如果在代码中的多个地方进行了相同的搜索,请考虑将代码抽象为函数,甚至将其自身的类抽象化。 如果你有一个非常大的数组,如果谓词可能非常复杂,考虑CordaDATA或另一个数据库解决方案。从长远来看,你会过得更好
  • 如果需要大的结果集,也可以考虑CordaDa/数据库< /LI>
谢谢。这里可以使用过滤功能吗?当然可以,也可以使用
索引对象
。但是您的决定取决于原始数组的大小、包含对象的复杂性、谓词的复杂性、结果集的大小等等。数组大小对于CoreData来说总是太小。使用数组和谓词,包括对象的
索引
filteredarrayingpredicate
。谢谢,我最后这样做了。你觉得呢?shiftsForDay=shifts.filter{$0.shiftDate==self.chosenDate}我想既然这是一行,我就可以这样做,而不是泛泛而谈。filter已经足够好了。