天天瞎忙活,QQ:705719110,欢迎来撩!

LinqToObjectiveC–Linq风格的查询API

iOS开发 随风 281℃ 0评论

这两天在优化一些数据的分类和排序,之前写的方法感觉很慢,偶然看到了LinqToObjectiveC这个库,发现很好用,就拿来直接使用了,这里简单介绍一下使用方法
使用pod安装,Podfile添加

先看一下我这里使用的

下面看一下官方的例子

NSArray方法示例

linq_where

基于谓词筛选值的序列。
下面的示例使用where方法查找为 25的人员:

linq_select

将序列中的每个元素投影到新表中. array 中的每个元素都由’选择器’转换成新的表单,然后用于填充输出 array 。

下面的示例使用返回每个 Person 实例的NAME的选择器。 输出将是 NSString 实例的array 。

linq_selectAndStopOnNil

将序列中的每个元素投影到新表中. 如果转换为任何元素返回零,投影将失败并返回零。

linq_sort

通过’自然’排序顺序或者通过 keySelector 对 array的元素进行排序。

下面是一个自然排序的示例,下面是 NSNumber 实例的集合:

你可以使用密钥选择器来对 array 实例的进行排序:

伴随的’降序’方法只是反转排序顺序:

linq_sum

对 array 中的元素求和。

linq_ofType

根据指定类型筛选 array的元素。

在以下示例中,筛选了 NSString 和 NSNumber 实例的混合 array,以只返回 NSString 实例:

linq_selectMany

将序列中的每个元素投影到 NSArray,并将结果序列展平为一个序列。

这是一个有趣的 ! 这类似于 select 方法,但是选择器必须返回 NSArray,选择多个操作将返回的数组拼合成单个序列。

下面是一个简单的例子:

一个更有用的例子可以能使用选择许多来返回订单 array的所有订单行。

linq_distinct

返回序列中的不同元素。 这只需要一个项的array,返回不同( 例如 )的array 。 唯一) 源顺序中的值。

这里方法的no-arg使用默认的比较给定对象的方法。 使用键选择器的版本允许你指定每个项的相等性所使用的值。

下面是一个示例,它从字符串的一个 array 返回不同的值:

下面是一个更复杂的示例,它使用密钥选择器来查找具有不同年龄的人员实例:

linq_aggregate

对序列应用累加器函数. 这里方法通过将累加器函数应用于每个连续元素,将 array 转换为单个值。

下面是一个从字符串的array 创建逗号分隔列表的示例:

下面是另一个示例,它从一个数字的array 返回最大值:

linq_firstOrNil

返回 array的第一个元素,如果 array 为空,则返回 nil 。

linq_lastOrNil

返回 array的最后一个元素,如果 array 为空,则返回 nil

linq_skip

返回跳过源 array的第一个’n’元素的array,包括 rest 。

linq_take

返回包含源 array的第一个’n’元素的array 。

linq_any

测试 array 中的任何项是否传递给定条件。

例如你可以检查 array 中的任何数字是否等于 25:

linq_all

测试 array 中的所有项是否都传递给给定的条件。

例如你可以检查 array 中的所有数字是否等于 25:

linq_groupBy

将 array 中的项分组返回字典。 将 groupKeySelector 应用于 array 中的每个元素,以确定它属于哪个组。

返回的字典将组值( 由密钥选择器返回) 作为键,每个值包含一个 NSArray,包含该组中的所有项。

例如,如果你想按它的第一个字母分组许多字符串,可以以执行以下操作:

linq_toDictionary

通过将给定的keySelector和( 可选) valueSelector应用到 array 中的每个项,将源 array 转换为字典。 如果你使用 toDictionaryWithKeySelector: 方法,或者 toDictionaryWithKeySelector:valueSelector: 使用 nil valueSelector的方法,每个字典项的值只是来自源 array的项。

例如,下面的代码采用名称 array,创建一个字典,它的中键是每个 NAME的第一个字母,值为 NAME ( 在较低的情况下) 。

而在下面没有值选择器,因此源 array 中的字符串直接使用。

linq_count

计算 array 中传递给定条件的元素数。

例如可以检查有多少数字等于某个值:

linq_concat

返回一个 array,它是concatonating的结果,给定 array 到这里 array的末尾。

linq_reverse

返回与源具有相同元素但顺序相反的array 。

NSDictionary方法示例

本节提供了每个API方法的几个简单示例。

linq_where

根据谓词过滤字典。

下面的示例使用filters字典删除任何等于它的值的键。

linq_select

将字典中的每个 key-value 对投影到新表单中。 每个 key-value 对都由’选择器’转换成新表单,然后用于填充输出字典的值。

以下示例获取具有字符串值的字典,返回一个新字典,其中每个值都是源字符串的第一个字符。

linq_toArray

将字典中的每个 key-value 对投影到一个新的窗体中,该窗体用于填充输出 array 。

以下示例获取带有字符串值的字典,返回连接字典中每个项的键和值的array 。

linq_any

测试字典中的任何 key-value 对是否传递给定的条件。

例如你可以检查值是否包含字母’n’:

linq_all

测试字典中的所有 key-value 对是否传递给给定的条件。

例如可以检查所有值是否包含字母’a’,或者使用条件的键组件查看每个值是否包含字符串键:

linq_count

计算满足给定条件的key-value 对的数目。

以下示例计算包含键的字典值的数量:

linq_merge

将本字典的内容与给定词典合并。 对于任何重复项,将使用源字典中的值。

下面的示例合并了一对字典

转载请注明:怼码人生 » LinqToObjectiveC–Linq风格的查询API

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址