草庐IT

6、Arrays类

全部标签

arrays - 将任何对象作为参数的 Swift 数组的扩展函数

我正在尝试在Swift中为Array实现一个简单的扩展函数,它将“切换”元素——如果该值已经在Array中,则应将其删除,如果没有这样的值,则应将其添加到数组。所以我认为它应该是这样的:extensionArray{mutatingfunctoggle(value:Element){ifletindex=indexOf(value){removeAtIndex(index)}else{append(value)}}}此代码不会构建说:“无法使用类型为‘(Element)’的参数列表调用‘indexOf’”。我想,我们应该以某种方式告诉编译器“值”参数应该符合Equatable协议(pr

arrays - 向后快速搜索数组

我有一个数组,我想向后搜索。我对原始数组的结果索引感兴趣,而不是实际值。如何将ReverseRandomAccessIndex转换为“正常”索引?letarr=[1,2,3,4,5]ifletindex=arr.reverse().indexOf(2)//indexisReverseRandomAccessIndex{letsearchvalue=arr.reverse()[index]} 最佳答案 很简单:letarr=[1,2,3,4,5]ifletindex=arr.reverse().indexOf(2){letsearch

arrays - 将字符串转换为 UTF 8

我目前有一个字符串数组,我想将其转换为一个UInt8数组?所有的字符串都是UInt8,但我只能将其作为字符串检索。有什么想法吗?letstringValues="[185,221,199,111,152,137,41,137,223,66,75,132]"我将数组中的每个项目拆分成单独的部分,我只是不知道如何将字符串转换为UInt8。谢谢 最佳答案 这个有效:varstringValues="[185,221,199,111,152,137,41,137,223,66,75,132]"stringValues=stringValue

arrays - 如何在函数中将 swift 数组作为 UnsafePointer<T> 参数传递

我读到,为了将swift变量/常量传递给期望UnsafePointer的参数,可以通过使用变量/常量前缀的“inout”(&符号)符号来完成。所以在下面的代码中,我想将“颜色”数组作为“UnsafePointer”传递给函数CGGradientCreateWithColorComponents(),但是我得到了一个编译器错误:“&与UnsafePointer类型的非输入输出参数一起使用”视觉效果见下图。所以,问题是,如何将swift数组“colors”转换为UnsafePointer?谢谢 最佳答案 将颜色类型显式更改为[CGFlo

arrays - 如何在 Swift 中使用 for 循环遍历元组数组

我有一个元组数组定义为:varpoints2D:Array=[(1,1),(2,3),(4,3),(9,5),(3,3),(7,6),(5,6)]当尝试像这样经历它时:funcfoo(){for(x,y)inpoints2D{}}我收到此错误消息:'τ_0_0'isnotconvertibleto'(@lvalueArray,@lvalueArray)'这是什么意思,我做错了什么? 最佳答案 points2D的类型不是Array,而是Array,所以让Swift推断类型:varpoints2D=[(1,1),(2,3),(4,3),

arrays - Reverse RandomAccessCollection 的 `_base` 属性是什么?

使用_base属性访问ReverseRandomAccessCollection的元素是一种好习惯吗?letmyArray=[1,2,3]print(myArray.first)//returns1print(myArray.reversed().first)//returns3print(myArray.reversed()._base.first)//return1,whichistheunderlyingbasearray 最佳答案 ReverseRandomAccessCollection(您可以看到itsfullimple

arrays - 按范围遍历数组

我有一个数组:[1,2,3,4,5,6...100]我希望以5为单位迭代这个数组,具体来说:取数组的前5个数字并取平均值,继续处理接下来的5个数字并取平均值,依此类推。我已经尝试了多种方法,例如Dequeue和for循环,但未能获得所需的结果。 最佳答案 您需要使用递增循环迭代每5个元素并使用reduce对子序列求和,然后将总数除以子序列元素数:letsequence=Array(1...100)varresults:[Double]=[]foridxinstride(from:sequence.indices.lowerBound

arrays - 将 plist 读入特定类型

使用时:letcities:[[String:String]]={guardletURL=Bundle.main.url(forResource:"cities",withExtension:"plist")else{return[]}returnNSArray(contentsOf:URL)as![[String:String]]}()来自这里:nameAllentown,PAicaoABE....以后使用以下方法很容易访问这些值://insidetableView(_cellForRowAt:)city=cities[indexPath.row]cell.icaoLabel?.te

arrays - UITableView SearchBar过滤查询

我有一个很长的tableView,可以搜索和过滤结果。但是,如果我输入字母“i”作为输入,所有带有字母“i”的单词都会出现。是否可以通过某种方式进行过滤,使我键入的字母对应于我要过滤的单词的第一个字母。例如我的数组["shouldnotuse","Tristan","biscuit","is","shouldnotuse"]如果我搜索单词"is",那个词能自动出现在“biscuit”这个词之前吗?ExpectedResult:["is","biscuit","Tristan"] 最佳答案 您可以使用filter和sorted函数来获

arrays - 单个数组元素的延迟初始化

在Swift中,lazyproperties允许我们仅在需要时初始化类成员,而不是直接在运行时初始化-这对于计算量大的操作很有用。我在Swift4中有一个类负责初始化strategy来自一组编译时(开发人员硬编码)提供的StrategyProtocol对象。它看起来像这样:classStrategyFactory{privatevaravailableStrategies:[StrategyProtocol]=[OneClassThatImplementsStrategyProtocol(),AnotherThatImplementsStrategyProtocol()//etc]pu