我想做的事: 我想在细分中选择商店的名称,并仅过滤出该特定商店中的商品。 示例: “我只想在亚马逊上看到商品” 解: 我在Discord中的小组成员之一,名为ValentinasM。 他教我这种方法。 您只需要在您的段代码中实现此代码。 这意味着,它只会仅显示亚马逊商店中的商品。 toStore在项目的关系中。 .name在商店实体中。 最终结果: 所以现在当我按亚马逊时 ,它只会显示亚马逊中的项目。
高阶函数是迅速进行功能编程的概念。 听起来很复杂,但相反却很简单。 定义:可以接受函数或闭包作为参数或返回一个函数/闭包的函数称为高阶函数。 有许多高阶函数,我们将研究其中最广泛使用的一些函数:map,flatMap,filter,reduce和sorted。 返回一个数组,其中包含将给定闭包映射到序列的元素上的结果。 进口基金会 让数组= [1,2,3,4,5] // map使用一个参数关闭,并将更改逐一应用于数组的每个元素。 让mapArray = = array.map({num in 数* 100 }) 打印(mappedArray) //使用尾随闭包来简化地图 让mapArray = array.map {$ 0 + 5} 打印(mapArray) 宣言: func flatMap (_转换:(Self.Element)抛出-> SegmentOfResult)重新抛出-> [SegmentOfResult.Element] whereSegmentOfResult:Sequence FlatMap非常喜欢Map,但是顾名思义,它可以使结果变平,因此,如果您有array(嵌套数组)的数组,并且使用了flatmap,那么它将提供合并了嵌套数组所有元素的级联数组。 进口基金会 让数组= [[“ Dhoni”,“ Ganguly”],[“ Kohli”,“ Rahul”],[“ Yuvraj”,“ Rohit”,“ Bhumrah”]] 让flatmap1 = array.flatMap {$ 0} 打印(flatmap1) 让arr = [“ […]
使用Apple内置的Core Image功能过滤图像实际上非常简单。 我们需要做的第一件事是创建一个我们想要使用的过滤器类型的枚举: 枚举FilterType:字符串{ 案例Chrome =“ CIPhotoEffectChrome” case Fade =“ CIPhotoEffectFade” case Instant =“ CIPhotoEffectInstant” case Mono =“ CIPhotoEffectMono” 案例Noir =“ CIPhotoEffectNoir” case Process =“ CIPhotoEffectProcess” case Tonal =“ CIPhotoEffectTonal” 案例转移=“ CIPhotoEffectTransfer” } 接下来,我们创建一个扩展函数,该函数需要过滤器类型。 然后,它获取这个filter.rawValue并将其输入CIFilter,然后将其应用于图像。 扩展程序UIImage { func addFilter(filter:FilterType)-> UIImage { 让过滤器= CIFilter(名称:filter.rawValue) //将UIImage转换为CIImage并设置为输入 让ciInput = CIImage(image:self) filter?.setValue(ciInput,forKey:“ inputImage”) //获取输出CIImage,首先渲染为CGImage以保留适当的UIImage比例 让ciOutput = filter?.outputImage 让ciContext = […]
据我了解,高阶函数是将另一个函数/闭包作为参数并返回它的函数。 我将首先尝试解释这一点。 考虑以下代码,这将使您了解什么是高阶函数: 将函数传递给另一个函数: 前两个方法的类型为(Double,Double)->Double 。 第一个接受两个double值并返回它们的和。 第二个返回这两个double值的乘积。 第三种方法是接受三个参数的高阶函数。 两个double值和一个类型为(Double,Double)->Double的函数。 看一下方法调用。 您将了解高阶函数的工作原理。 从另一个函数返回函数: 在这里,函数doArithmeticOperation(isMultiply:)是一个高阶函数,它返回类型为(Double,Double)->Double的函数。 函数和闭包是迅速的一等成员。 它们可以保存到变量中并传递。 因此,此处,基于传递给doArithmeticOperation(isMultiply:)函数的布尔值,它返回执行该操作的函数。 operationToPerform_1是为您执行乘法的函数。 operationToPerform_2是为您执行添加operationToPerform_2的函数。 只需看一下函数定义和调用即可。 您将了解所有内容。 当然,您可以通过许多不同的方式来做同样的事情。 可能是您可以使用闭包代替函数。 您可以创建一个算术运算枚举并简化该函数。 我只是想解释什么是高阶函数。 这是swift中使用的一些高阶函数。 如果我正确理解,以下函数将闭包用作参数。 您可以使用这些函数对Swift集合类型(例如Array, set或Dictionary 。 在进行以下操作之前,您应该了解什么是闭包。 阅读我关于闭包的文章 地图 使用 map 遍历一个集合,并对集合中的每个元素应用相同的操作。 map函数返回一个数组,其中包含对每个项目应用映射或转换函数的结果。 映射数组: 假设我们有一个整数数组: 让arrayOfInt = [2,3,4,5,4,7,2] 如果我们必须将每个数字乘以10怎么办? 我们通常使用for-in循环遍历每个数字,操作正确吗? var newArr:[Int] = [] 表示arrayOfInt中的值{newArr.append(value * 10)} print(newArr)//打印[20,30,40,50,40,70,20] 此代码看起来很冗长。 有一些样板代码,例如创建新的数组,可以使用map来避免。 如果我们尝试映射Int数组,则快速自动完成功能将显示以下内容。 […]
我知道,我至少要迟到一天,但是在贝尔格莱德,除了去看牙医,还有很多事情要做! -真的很难找到时间! 无论如何… 今天是第七个项目的挑战日 ! 不过,首先让我们回顾一下我们学到的所有很棒的东西: 使用Swift的Data类型进行JSON解码 使用Codable协议将数据转换为我们定义的Swift对象。 UITabBarController , UIStoryboard … 评论 从字符串创建URL可能会失败。 String , Int , [String]等都符合Codable 。 Swift的Data类型可以保存任何类型的二进制数据。 Codable协议可以将Swift类型与JSON相互转换。 情节提要标识符可以让我们用代码创建情节提要视图控制器。 UITabBarController能够存储多个视图控制器供用户选择。 UIStoryboard可以从我们的包中加载情节UIStoryboard并从那里创建视图控制器。 Apple提供了一些内置的UITabBarItem类型,以供一般使用。 JSONDecoder类型完成了将JSON转换为Swift值的艰苦工作。 我们可以直接从URL创建一个Data实例。 JSON是一种存储和发送数据的轻量级方法。 带有字幕的表格视图单元格显示两个不同的文本标签。 评论 当然,我只是在这里插入了正确的答案,但是,如果您有时间,请转到“利用Swift黑客”倡议的评论页面,然后看看其他答案。 许多人很坦率,但其他许多人却不……这就是保罗成为一位出色的老师的原因! 它给了您一些提示,但您必须从地下挖出金块! 挑战性 挑战1:使用UIBarButtonItem右上角添加一个Credits按钮。 轻按此按钮后,显示警报,告知用户数据来自Whitehouse的We The People API 首先,让我们创建一个按钮。 在这里,我不得不再次感谢保罗,因为我不费吹灰之力就知道该去哪里,怎么写以及怎么做! 这是我放入viewDidLoad()的代码: navigationItem.rightBarButtonItem = UIBarButtonItem(title: “Credits”, style: .plain, target: self, action: #selector(showCredits)) 这将创建一个具有.plain样式的按钮(即,仅带有文本的按钮),以self (视图控制器)为目标,而作为操作,我们仍然需要编写一种方法。 […]